]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86/IBRS: Don't try to change IBRS mode if IBRS is not available
authorBoris Ostrovsky <boris.ostrovsky@oracle.com>
Tue, 23 Jan 2018 16:02:42 +0000 (11:02 -0500)
committerJack Vogel <jack.vogel@oracle.com>
Sat, 27 Jan 2018 00:32:56 +0000 (16:32 -0800)
sysctl_ibrs_enabled is set properly when IBRS support is discovered
in init_scattered_cpuid_features(). We should simply return an error
when attempt is made to change IBRS mode when the feature is not supoorted.

There is also no need to call set_ibrs_inuse() when changing mode to 1:
this is already done by clear_ibrs_disabled().

Orabug: 27448280

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/kernel/cpu/spec_ctrl.c

index fab5d6d8fdf5c0a6f49053038b6b4417eceea7d4..e74e500eb45e63198684dde86e8054d8b47c63c0 100644 (file)
@@ -51,6 +51,9 @@ static ssize_t ibrs_enabled_write(struct file *file,
         ssize_t len;
         unsigned int enable;
 
+       if (!ibrs_supported)
+               return -ENODEV;
+
         len = min(count, sizeof(buf) - 1);
         if (copy_from_user(buf, user_buf, len))
                 return -EFAULT;
@@ -74,11 +77,6 @@ static ssize_t ibrs_enabled_write(struct file *file,
                        spec_ctrl_flush_all_cpus(MSR_IA32_SPEC_CTRL, SPEC_CTRL_FEATURE_DISABLE_IBRS);
        } else {
                clear_ibrs_disabled();
-               if (use_ibrs & SPEC_CTRL_IBRS_SUPPORTED)
-                       set_ibrs_inuse();
-               else
-                       /* Platform don't support IBRS */
-                       enable = 0;
        }
 
        sysctl_ibrs_enabled = enable;