x86/uaccess: Use XORL %0,%0 in __get_user_asm()
authorUros Bizjak <ubizjak@gmail.com>
Thu, 27 Aug 2020 18:09:04 +0000 (20:09 +0200)
committerBorislav Petkov <bp@suse.de>
Thu, 3 Sep 2020 20:49:03 +0000 (22:49 +0200)
XORL %0,%0 is equivalent to XORQ %0,%0 as both will zero the entire
register. Use XORL %0,%0 for all operand sizes to avoid REX prefix byte
when legacy registers are used and to avoid size prefix byte when 16bit
registers are used.

Zeroing the full register is OK in this use case.

As a result, the size of the .fixup section decreases by 20 bytes.

 [ bp: Massage commit message. ]

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Link: https://lkml.kernel.org/r/20200827180904.96399-1-ubizjak@gmail.com
arch/x86/include/asm/uaccess.h

index ecefaffd15d4c804980dd3a00615994b2667eea6..2bffba2a1b2323903154ff227038a72228858e93 100644 (file)
@@ -343,7 +343,7 @@ do {                                                                        \
                     "2:\n"                                             \
                     ".section .fixup,\"ax\"\n"                         \
                     "3:        mov %[efault],%[errout]\n"              \
-                    "  xor"itype" %[output],%[output]\n"               \
+                    "  xorl %k[output],%k[output]\n"                   \
                     "  jmp 2b\n"                                       \
                     ".previous\n"                                      \
                     _ASM_EXTABLE_UA(1b, 3b)                            \