[tip: x86/asm] x86/process/32: Use correct type for 'gs' variable in __show_regs() to avoid zero-extension

tip-bot2 for Uros Bizjak posted 1 patch 1 day, 3 hours ago
arch/x86/kernel/process_32.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[tip: x86/asm] x86/process/32: Use correct type for 'gs' variable in __show_regs() to avoid zero-extension
Posted by tip-bot2 for Uros Bizjak 1 day, 3 hours ago
The following commit has been merged into the x86/asm branch of tip:

Commit-ID:     6829f19810e96903d7b532145c3d1701b4d9a0f6
Gitweb:        https://git.kernel.org/tip/6829f19810e96903d7b532145c3d1701b4d9a0f6
Author:        Uros Bizjak <ubizjak@gmail.com>
AuthorDate:    Mon, 30 Mar 2026 10:59:22 +02:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Tue, 31 Mar 2026 09:50:10 +02:00

x86/process/32: Use correct type for 'gs' variable in __show_regs() to avoid zero-extension

Change the type of 'gs' variable in __show_regs() from
'unsigned short' to 'unsigned int'. This prevents unwanted
zero-extension when storing the 16-bit segment register
into a wider general purpose register.

The code improves from:

  50:	8c ee                	mov    %gs,%esi
  52:	0f b7 f6             	movzwl %si,%esi
  ...
  be:	89 74 24 14          	mov    %esi,0x14(%esp)

to:

  50:	8c ef                	mov    %gs,%edi
  ...
  bb:	89 7c 24 14          	mov    %edi,0x14(%esp)

No functional change intended.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://patch.msgid.link/20260330085938.67985-3-ubizjak@gmail.com
---
 arch/x86/kernel/process_32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 3ef15c2..168dabf 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -61,7 +61,7 @@ void __show_regs(struct pt_regs *regs, enum show_regs_mode mode,
 {
 	unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
 	unsigned long d0, d1, d2, d3, d6, d7;
-	unsigned short gs;
+	unsigned int gs;
 
 	savesegment(gs, gs);