summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArvind Sankar <nivedita@alum.mit.edu>2020-02-02 12:13:52 -0500
committerArd Biesheuvel <ardb@kernel.org>2020-02-22 23:37:37 +0100
commitb75e2b076d00751579c73cfbbc8a7eac7d2a0468 (patch)
treeeb82a894524be3c2618b6e169e96ac4157fd1c28
parentef5a7b5eb13ed88ba9690ab27def3a085332cc8c (diff)
downloadlinux-b75e2b076d00751579c73cfbbc8a7eac7d2a0468.tar.bz2
x86/boot: GDT limit value should be size - 1
The limit value for the GDTR should be such that adding it to the base address gives the address of the last byte of the GDT, i.e. it should be one less than the size, not the size. Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200202171353.3736319-7-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
-rw-r--r--arch/x86/boot/compressed/head_64.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 69cc6c68741e..c36e6156b6a3 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -624,12 +624,12 @@ SYM_FUNC_END(.Lno_longmode)
.data
SYM_DATA_START_LOCAL(gdt64)
- .word gdt_end - gdt
+ .word gdt_end - gdt - 1
.quad 0
SYM_DATA_END(gdt64)
.balign 8
SYM_DATA_START_LOCAL(gdt)
- .word gdt_end - gdt
+ .word gdt_end - gdt - 1
.long gdt
.word 0
.quad 0x00cf9a000000ffff /* __KERNEL32_CS */