[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v16 1/5] arm/vpci: honor access size when returning an error
On Wed, May 22, 2024 at 06:59:20PM -0400, Stewart Hildebrand wrote: > From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx> > > Guest can try to read config space using different access sizes: 8, > 16, 32, 64 bits. We need to take this into account when we are > returning an error back to MMIO handler, otherwise it is possible to > provide more data than requested: i.e. guest issues LDRB instruction > to read one byte, but we are writing 0xFFFFFFFFFFFFFFFF in the target > register. Shouldn't this be taken care of in the trap handler subsystem, rather than forcing each handler to ensure the returned data matches the access size? IOW, something like: diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c index 96c740d5636c..b7e12df85f87 100644 --- a/xen/arch/arm/io.c +++ b/xen/arch/arm/io.c @@ -37,6 +37,7 @@ static enum io_state handle_read(const struct mmio_handler *handler, return IO_ABORT; r = sign_extend(dabt, r); + r = r & GENMASK_ULL((1U << dabt.size) * 8 - 1, 0); set_user_reg(regs, dabt.reg, r); (not even build tested) Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |