ACPI / extlog: Check for RDMSR failure
authorBen Hutchings <ben@decadent.org.uk>
Sun, 27 Sep 2020 21:50:42 +0000 (22:50 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 2 Oct 2020 17:01:55 +0000 (19:01 +0200)
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>
drivers/acpi/acpi_extlog.c

index f138e12b7b82374e7a790eff64f123460004f5d6..72f1fb77abcd03b5a332d0d13d8803a2cb8035df 100644 (file)
@@ -222,9 +222,9 @@ static int __init extlog_init(void)
        u64 cap;
        int rc;
 
-       rdmsrl(MSR_IA32_MCG_CAP, cap);
-
-       if (!(cap & MCG_ELOG_P) || !extlog_get_l1addr())
+       if (rdmsrl_safe(MSR_IA32_MCG_CAP, &cap) ||
+           !(cap & MCG_ELOG_P) ||
+           !extlog_get_l1addr())
                return -ENODEV;
 
        rc = -EINVAL;