mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/pv: disallow access to unknown MSRs
Change the catch-all behavior for MSR not explicitly handled. Instead of allow full read-access to the MSR space and silently dropping writes return an exception when the MSR is not explicitly handled. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
8a31c255af
commit
322ec7c89f
1 file changed
+10
-8
@@ -988,9 +988,10 @@ static int read_msr(unsigned int reg, uint64_t *val,
|
||||
}
|
||||
/* fall through */
|
||||
default:
|
||||
gdprintk(XENLOG_WARNING, "RDMSR 0x%08x unimplemented\n", reg);
|
||||
break;
|
||||
|
||||
normal:
|
||||
/* Everyone can read the MSR space. */
|
||||
/* gdprintk(XENLOG_WARNING, "Domain attempted RDMSR %08x\n", reg); */
|
||||
if ( rdmsr_safe(reg, *val) )
|
||||
break;
|
||||
return X86EMUL_OKAY;
|
||||
@@ -1155,14 +1156,15 @@ static int write_msr(unsigned int reg, uint64_t val,
|
||||
}
|
||||
/* fall through */
|
||||
default:
|
||||
if ( rdmsr_safe(reg, temp) )
|
||||
break;
|
||||
gdprintk(XENLOG_WARNING,
|
||||
"WRMSR 0x%08x val 0x%016"PRIx64" unimplemented\n",
|
||||
reg, val);
|
||||
break;
|
||||
|
||||
if ( val != temp )
|
||||
invalid:
|
||||
gdprintk(XENLOG_WARNING,
|
||||
"Domain attempted WRMSR %08x from 0x%016"PRIx64" to 0x%016"PRIx64"\n",
|
||||
reg, temp, val);
|
||||
gdprintk(XENLOG_WARNING,
|
||||
"Domain attempted WRMSR 0x%08x from 0x%016"PRIx64" to 0x%016"PRIx64"\n",
|
||||
reg, temp, val);
|
||||
return X86EMUL_OKAY;
|
||||
}
|
||||
|
||||
|
||||