x86: minor cleanup in the espfix code
authorStas Sergeev <stsp@aknet.ru>
Mon, 23 Feb 2009 16:13:07 +0000 (19:13 +0300)
committerH. Peter Anvin <hpa@linux.intel.com>
Mon, 23 Feb 2009 19:34:04 +0000 (11:34 -0800)
Impact: Cleanup

Checkin be44d2aabce2d62f72d5751d1871b6212bf7a1c7 eliminates the use of
a 16-bit stack for espfix.  However, at least one instruction remained
that only operated on the low 16 bits of %esp.

This is not a bug per se because the kernel stack is always an aligned
4K or 8K block.  Therefore it cannot cross 64K boundaries; this code,
in fact, relies strictly on that fact.

However, it's a lot cleaner (and, for that matter, smaller) to operate
on the entire 32-bit register.

Signed-off-by: Stas Sergeev <stsp@aknet.ru>
CC: Zachary Amsden <zach@vmware.com>
CC: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/kernel/entry_32.S

index 999e827ef9c7896876134566e149f2153992c2f8..899e8938e79f3d571cb207d6205b14800b2aa713 100644 (file)
@@ -1359,7 +1359,7 @@ nmi_espfix_stack:
        CFI_ADJUST_CFA_OFFSET 4
        pushl %esp
        CFI_ADJUST_CFA_OFFSET 4
-       addw $4, (%esp)
+       addl $4, (%esp)
        /* copy the iret frame of 12 bytes */
        .rept 3
        pushl 16(%esp)