Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI / extlog: Check for RDMSR failure

extlog_init() uses rdmsrl() to read an MSR, which on older CPUs
provokes a error message at boot:

unchecked MSR access error: RDMSR from 0x179 at rIP: 0xcd047307 (native_read_msr+0x7/0x40)

Use rdmsrl_safe() instead, and return -ENODEV if it fails.

Reported-by: jim@photojim.ca
References: https://bugs.debian.org/971058
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Ben Hutchings and committed by
Rafael J. Wysocki
7cecb47f a1b8638b

+3 -3
+3 -3
drivers/acpi/acpi_extlog.c
··· 222 222 u64 cap; 223 223 int rc; 224 224 225 - rdmsrl(MSR_IA32_MCG_CAP, cap); 226 - 227 - if (!(cap & MCG_ELOG_P) || !extlog_get_l1addr()) 225 + if (rdmsrl_safe(MSR_IA32_MCG_CAP, &cap) || 226 + !(cap & MCG_ELOG_P) || 227 + !extlog_get_l1addr()) 228 228 return -ENODEV; 229 229 230 230 rc = -EINVAL;