|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 6/8] 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@xxxxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
Changes since v2:
- Added missing 0x prefix.
---
xen/arch/x86/pv/emul-priv-op.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c
index bcc1188f6a..2d9953f5b4 100644
--- a/xen/arch/x86/pv/emul-priv-op.c
+++ b/xen/arch/x86/pv/emul-priv-op.c
@@ -972,9 +972,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;
@@ -1141,14 +1142,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;
}
--
2.28.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |