UBUNTU: SAUCE: remove ibrs_dump sysctl interface
authorKamal Mostafa <kamal@canonical.com>
Wed, 4 Apr 2018 16:32:58 +0000 (09:32 -0700)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Mon, 7 May 2018 11:15:57 +0000 (13:15 +0200)
BugLink: http://bugs.launchpad.net/bugs/1755627
The ibrs_dump sysctl interface landed in the Ubuntu backport
df043b74ba71 ("x86/spec_ctrl: Add sysctl knobs to enable/disable
SPEC_CTRL feature") but nothing like it reached mainline.

This debug interface spams dmesg with many lines of output each time
/proc/sys/kernel/ibrs_dump is accessed (notably, every run of 'sysctl -a')
The interface returns only a dummy sysctl value; it has no other purpose
aside from generating dmesg output.

Remove the interface to squelch the excessive dmesg logging by 'sysctl -a'.

Fixes: df043b74ba71 ("x86/spec_ctrl: Add sysctl knobs to enable/disable SPEC_CTRL feature")
Acked-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Leann Ogasawara <leann.ogasawara@canonical.com>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
kernel/sysctl.c

index 47a37792109dd7b0043cb6f24f0871da707f2a81..5596940dda98b1d3df1159e418b36c2117046c53 100644 (file)
@@ -229,8 +229,6 @@ int proc_dointvec_ibrs_ctrl(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos);
 int proc_dointvec_ibpb_ctrl(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos);
-int proc_dointvec_ibrs_dump(struct ctl_table *table, int write,
-                 void __user *buffer, size_t *lenp, loff_t *ppos);
 #endif
 
 #ifdef CONFIG_MAGIC_SYSRQ
@@ -269,7 +267,6 @@ extern struct ctl_table epoll_table[];
 int sysctl_legacy_va_layout;
 #endif
 
-u32 sysctl_ibrs_dump = 0;
 u32 sysctl_ibrs_enabled = 0;
 EXPORT_SYMBOL(sysctl_ibrs_enabled);
 u32 sysctl_ibpb_enabled = 0;
@@ -1278,15 +1275,6 @@ static struct ctl_table kern_table[] = {
                .extra1         = &zero,
                .extra2         = &one,
        },
-       {
-               .procname       = "ibrs_dump",
-               .data           = &sysctl_ibrs_dump,
-               .maxlen         = sizeof(unsigned int),
-               .mode           = 0644,
-               .proc_handler   = proc_dointvec_ibrs_dump,
-               .extra1         = &zero,
-               .extra2         = &one,
-       },
 #endif
        { }
 };
@@ -2632,34 +2620,6 @@ int proc_dointvec_minmax(struct ctl_table *table, int write,
 }
 
 #ifdef CONFIG_X86
-int proc_dointvec_ibrs_dump(struct ctl_table *table, int write,
-       void __user *buffer, size_t *lenp, loff_t *ppos)
-{
-       int ret, orig_inuse;
-       unsigned int cpu;
-
-
-       ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
-       printk("sysctl_ibrs_enabled = %u, sysctl_ibpb_enabled = %u\n", sysctl_ibrs_enabled, sysctl_ibpb_enabled);
-       printk("use_ibrs = %d, use_ibpb = %d\n", use_ibrs, use_ibpb);
-       mutex_lock(&spec_ctrl_mutex);
-       orig_inuse = use_ibrs;
-       /* temporary halt to ibrs usage to dump ibrs values */
-       clear_ibrs_inuse();
-       for_each_online_cpu(cpu) {
-              u64 val;
-
-              if (boot_cpu_has(X86_FEATURE_SPEC_CTRL))
-                      rdmsrl_on_cpu(cpu, MSR_IA32_SPEC_CTRL, &val);
-              else
-                      val = 0;
-              printk("read cpu %d ibrs val %lu\n", cpu, (unsigned long) val);
-       }
-       use_ibrs = orig_inuse;
-       mutex_unlock(&spec_ctrl_mutex);
-       return ret;
-}
-
 int proc_dointvec_ibrs_ctrl(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
 {