|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86: constrain sub-page access length in mmio_ro_emulated_write()
commit 8dbd9966f82f95b017f06e9397fc78064b688d61
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Apr 28 09:48:14 2025 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Apr 28 09:48:14 2025 +0200
x86: constrain sub-page access length in mmio_ro_emulated_write()
Without doing so we could trigger the ASSERT_UNREACHABLE() in
subpage_mmio_write_emulate(). A comment there actually says this
validation would already have been done ...
Fixes: 8847d6e23f97 ("x86/mm: add API for marking only part of a MMIO page
read only")
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Jason Andryuk <jason.andryuk@xxxxxxx>
---
xen/arch/x86/mm.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 1cf2365167..ac5b51d17a 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5195,8 +5195,13 @@ int cf_check mmio_ro_emulated_write(
return X86EMUL_UNHANDLEABLE;
}
- subpage_mmio_write_emulate(mmio_ro_ctxt->mfn, PAGE_OFFSET(offset),
- p_data, bytes);
+ if ( bytes <= 8 )
+ subpage_mmio_write_emulate(mmio_ro_ctxt->mfn, PAGE_OFFSET(offset),
+ p_data, bytes);
+ else if ( subpage_mmio_find_page(mmio_ro_ctxt->mfn) )
+ gprintk(XENLOG_WARNING,
+ "unsupported %u-byte write to R/O MMIO 0x%"PRI_mfn"%03lx\n",
+ bytes, mfn_x(mmio_ro_ctxt->mfn), PAGE_OFFSET(offset));
return X86EMUL_OKAY;
}
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |