x86: msr: fix bogus return values from rdmsr_safe/wrmsr_safe
authorH. Peter Anvin <hpa@zytor.com>
Tue, 26 Aug 2008 05:39:15 +0000 (22:39 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 26 Aug 2008 05:39:15 +0000 (22:39 -0700)
commit08970fc4e0385790a7b093adfaa4165a189f9eb0
tree9a7ca00d88f64ba69abb3cc1cb7a4a803033b12a
parent9ea2b82ed6265a31f9a84886d74d8a2ef01b27c8
x86: msr: fix bogus return values from rdmsr_safe/wrmsr_safe

Impact: bogus error codes (+other?) on x86-64

The rdmsr_safe/wrmsr_safe routines have macros for the handling of the
edx:eax arguments.  Those macros take a variable number of assembly
arguments.  This is rather inherently incompatible with using
%digit-style escapes in the inline assembly; replace those with
%[name]-style escapes.

This fixes miscompilation on x86-64, which at the very least caused
bogus return values.  It is possible that this could also corrupt the
return value; I am not sure.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
include/asm-x86/msr.h