As of kernel 4.4-rc1 segmentation fault if msr module not loaded. [REGRESSION][BISECTED]

From: Doug Smythies
Date: Thu Nov 26 2015 - 11:25:54 EST


Hi,

This might be considered a minor issue, but I submit my
findings anyhow.

In some distros, the msr module is not loaded by default.
(I guess not built in by default, would be more correct.)
I often forget to load it before using "rdmsr" or "wrmsr".
It was never an issue before, but as of Kernel 4.4-rc1
it causes a segmentation fault crash. Example:

# rdmsr -a 0x19a
Segmentation fault (core dumped)

It could be argued that the msr-tools commands should
check if the module is loaded and abort with some error
message if not (or, and as turbostat now does, just load
the module). However, what I do not know is if there
might be other effected use cases.

The kernel was bisected, and this is the result:

9a2bc335f100a0f6ee6392b9f97ac4188d84db1d is the first bad commit
commit 9a2bc335f100a0f6ee6392b9f97ac4188d84db1d
Author: Borislav Petkov <bp@xxxxxxx>
Date: Tue Oct 20 11:54:44 2015 +0200

x86/microcode: Unmodularize the microcode driver

Make CONFIG_MICROCODE a bool. It was practically a bool already anyway,
since early loader was forcing it to =y.
...

Since I sometimes mess up using git bisect, and end up at some random result,
the above was double checked manually:

9a2bc335f100a0f6ee6392b9f97ac4188d84db1d has the issue
81ffdcdd97d94110627caa81c23d5d780083731d (the previous commit) does not have the issue.

As a potentially interesting side note, the segmentation fault
does not occur if I use sudo instead. Example:

$ sudo rdmsr -a 0x19a
$

Of course, if I load the module then things work as expected:

# modprobe msr
# rdmsr -a 0x19a
0
0
0
0
0
0
0
0


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/