summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gordeev <agordeev@linux.ibm.com>2022-11-21 19:58:35 +0300
committerAlexander Gordeev <agordeev@linux.ibm.com>2022-12-05 17:01:31 +0300
commit21c7996917cb5c9d8669409b00d990b75d22a849 (patch)
tree8ea27f8a2993839827b4d0ec991a5b0b37013a43
parentdfe843dce775f16e3d15a1bf14e5363bff2321f3 (diff)
downloadlinux-21c7996917cb5c9d8669409b00d990b75d22a849.tar.xz
vfio/ccw: sort out physical vs virtual pointers usage
The ORB's interrupt parameter field is stored unmodified into the interruption code when an I/O interrupt occurs. As this reflects a real device, let's store the physical address of the subchannel struct so it can be used when processing an interrupt. Note: this currently doesn't fix a real bug, since virtual addresses are identical to physical ones. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> [EF: Updated commit message] Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Reviewed-by: Nico Boehr <nrb@linux.ibm.com> Link: https://lore.kernel.org/r/20221121165836.283781-2-farman@linux.ibm.com
-rw-r--r--drivers/s390/cio/vfio_ccw_fsm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/cio/vfio_ccw_fsm.c b/drivers/s390/cio/vfio_ccw_fsm.c
index a59c758869f8..0a5e8b4a6743 100644
--- a/drivers/s390/cio/vfio_ccw_fsm.c
+++ b/drivers/s390/cio/vfio_ccw_fsm.c
@@ -29,7 +29,7 @@ static int fsm_io_helper(struct vfio_ccw_private *private)
spin_lock_irqsave(sch->lock, flags);
- orb = cp_get_orb(&private->cp, (u32)(addr_t)sch, sch->lpm);
+ orb = cp_get_orb(&private->cp, (u32)virt_to_phys(sch), sch->lpm);
if (!orb) {
ret = -EIO;
goto out;