2023-08-07 09:53:30

by Yuntao Wang

[permalink] [raw]
Subject: [PATCH] x86/head: Fix incorrect size value of startup_gdt_descr

Since the size value is added to the base address to yield the last valid
byte address of the GDT, the current size value of startup_gdt_descr is
incorrect, fix it.

Fixes: 866b556efa12 ("x86/head/64: Install startup GDT")
Signed-off-by: Yuntao Wang <[email protected]>
---
arch/x86/kernel/head64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 49f7629b17f7..cfd70939a099 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -80,7 +80,7 @@ static struct desc_struct startup_gdt[GDT_ENTRIES] = {
* while the kernel still uses a direct mapping.
*/
static struct desc_ptr startup_gdt_descr = {
- .size = sizeof(startup_gdt),
+ .size = sizeof(startup_gdt) - 1,
.address = 0,
};

--
2.41.0



Subject: [tip: x86/boot] x86/boot: Fix incorrect startup_gdt_descr.size

The following commit has been merged into the x86/boot branch of tip:

Commit-ID: 001470fed5959d01faecbd57fcf2f60294da0de1
Gitweb: https://git.kernel.org/tip/001470fed5959d01faecbd57fcf2f60294da0de1
Author: Yuntao Wang <[email protected]>
AuthorDate: Mon, 07 Aug 2023 16:45:47 +08:00
Committer: Ingo Molnar <[email protected]>
CommitterDate: Tue, 03 Oct 2023 10:28:29 +02:00

x86/boot: Fix incorrect startup_gdt_descr.size

Since the size value is added to the base address to yield the last valid
byte address of the GDT, the current size value of startup_gdt_descr is
incorrect (too large by one), fix it.

[ mingo: This probably never mattered, because startup_gdt[] is only used
in a very controlled fashion - but make it consistent nevertheless. ]

Fixes: 866b556efa12 ("x86/head/64: Install startup GDT")
Signed-off-by: Yuntao Wang <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
arch/x86/kernel/head64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 49f7629..bbc2179 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -80,7 +80,7 @@ static struct desc_struct startup_gdt[GDT_ENTRIES] = {
* while the kernel still uses a direct mapping.
*/
static struct desc_ptr startup_gdt_descr = {
- .size = sizeof(startup_gdt),
+ .size = sizeof(startup_gdt)-1,
.address = 0,
};

2023-10-03 21:56:45

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [tip: x86/boot] x86/boot: Fix incorrect startup_gdt_descr.size

On October 3, 2023 1:39:57 AM PDT, tip-bot2 for Yuntao Wang <[email protected]> wrote:
>The following commit has been merged into the x86/boot branch of tip:
>
>Commit-ID: 001470fed5959d01faecbd57fcf2f60294da0de1
>Gitweb: https://git.kernel.org/tip/001470fed5959d01faecbd57fcf2f60294da0de1
>Author: Yuntao Wang <[email protected]>
>AuthorDate: Mon, 07 Aug 2023 16:45:47 +08:00
>Committer: Ingo Molnar <[email protected]>
>CommitterDate: Tue, 03 Oct 2023 10:28:29 +02:00
>
>x86/boot: Fix incorrect startup_gdt_descr.size
>
>Since the size value is added to the base address to yield the last valid
>byte address of the GDT, the current size value of startup_gdt_descr is
>incorrect (too large by one), fix it.
>
>[ mingo: This probably never mattered, because startup_gdt[] is only used
> in a very controlled fashion - but make it consistent nevertheless. ]
>
>Fixes: 866b556efa12 ("x86/head/64: Install startup GDT")
>Signed-off-by: Yuntao Wang <[email protected]>
>Signed-off-by: Ingo Molnar <[email protected]>
>Cc: "H. Peter Anvin" <[email protected]>
>Link: https://lore.kernel.org/r/[email protected]
>---
> arch/x86/kernel/head64.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
>index 49f7629..bbc2179 100644
>--- a/arch/x86/kernel/head64.c
>+++ b/arch/x86/kernel/head64.c
>@@ -80,7 +80,7 @@ static struct desc_struct startup_gdt[GDT_ENTRIES] = {
> * while the kernel still uses a direct mapping.
> */
> static struct desc_ptr startup_gdt_descr = {
>- .size = sizeof(startup_gdt),
>+ .size = sizeof(startup_gdt)-1,
> .address = 0,
> };
>

Well, it never mattered because there wasn't enough space at the end for an extra entry, but it is still Technically Correctâ„¢.