Commit be24d819 authored by Anti Sullin's avatar Anti Sullin Committed by Michael Karcher
Browse files

Write MSRs in a platform and compiler-independent form


Msr_t memory layout may depend on compiler; with optimizations this may
lead to writing incorrect data to MSR. Create a temporary buffer with
correct layout to avoid this problem.

Corresponding to flashrom svn r999.
Signed-off-by: default avatarAnti Sullin <anti.sullin@artecdesign.ee>
Acked-by: default avatarMichael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
parent 8841d3e7
......@@ -282,13 +282,17 @@ msr_t rdmsr(int addr)
int wrmsr(int addr, msr_t msr)
{
uint32_t buf[2];
buf[0] = msr.lo;
buf[1] = msr.hi;
if (lseek(fd_msr, (off_t) addr, SEEK_SET) == -1) {
perror("Could not lseek() to MSR");
close(fd_msr);
exit(1);
}
if (write(fd_msr, &msr, 8) != 8 && errno != EIO) {
if (write(fd_msr, buf, 8) != 8 && errno != EIO) {
perror("Could not write() MSR");
close(fd_msr);
exit(1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment