On Sat, Aug 20, 2022 at 11:25:24AM +0200, Juergen Gross wrote:
When booting or resuming the system MTRR state is saved on the boot processor and then this state is loaded into MTRRs of all other cpus. During update of the MTRRs the MTRR mechanism needs to be disabled by writing the related MSR. The old contents of this MSR are saved in a set of static variables and later those static variables are used to restore the MSR.
In case the MSR contents need to be modified on a cpu due to the MSR not having been initialized properly by the BIOS, the related update function is modifying the static variables accordingly.
Unfortunately the MTRR state update is usually running on all cpus at the same time, so using just one set of static variables for all cpus is racy in case the MSR contents differ across cpus.
Fix that by using percpu variables for saving the MSR contents.
Cc: stable@vger.kernel.org Signed-off-by: Juergen Gross jgross@suse.com
I thought adding a "Fixes:" tag for the kernel's initial git commit would maybe be entertaining, but without being really helpful.
So that means I will just do a "best guess" as to how far to backport things. Hopefully I guess well...
thanks,
greg k-h