linux/drivers/s390/cio
Jason J. Herne c389377c01 vfio: ccw: fix bad ptr math for TIC cda translation
When we are translating channel data addresses from guest to host
address space for TIC instructions we are getting incorrect
addresses because of a pointer arithmetic error.

We currently calculate the offset of the TIC's cda from the start
of the channel program chain (ccw->cda - ccw_head). We then add
that to the address of the ccw chain in host memory (iter->ch_ccw).
The problem is that iter->ch_ccw is a pointer to struct ccw1 so
when we increment it we are actually incrementing by the size of
struct ccw1 which is 8 bytes. The intent was to increment by
n-bytes, not n*8.

The fix: cast iter->ch_ccw to char* so it will be incremented by
n*1.

Reviewed-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Signed-off-by: Jason J. Herne <jjherne@linux.vnet.ibm.com>
Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Message-Id: <20170721011436.76112-1-bjsdjshi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
2017-07-24 09:54:37 +02:00
..
airq.c s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
blacklist.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
blacklist.h
ccwgroup.c s390/ccwgroup: increase string buffer size 2017-05-09 10:44:36 +02:00
ccwreq.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
chp.c s390: chp: handle CRW_ERC_INIT for channel-path status change 2017-07-13 11:28:29 +02:00
chp.h s390/cio: clarify cssid usage 2017-01-16 07:27:52 +01:00
chsc.c s390/cio: use cssid for pgid generation 2017-01-16 07:27:52 +01:00
chsc.h s390/cio: use cssid for pgid generation 2017-01-16 07:27:52 +01:00
chsc_sch.c s390/chsc: fix ioctl CHSC_INFO_CU command 2016-07-15 14:31:58 +02:00
chsc_sch.h
cio.c s390: cio: export more interfaces 2017-03-31 12:55:03 +02:00
cio.h s390: cio: introduce cio_cancel_halt_clear 2017-03-31 12:55:02 +02:00
cio_debug.h
cmf.c s390/cio: remove cmf related code relevant for 31 bit only 2017-01-16 07:27:55 +01:00
crw.c s390/cio: Consolidate inline assemblies and related data definitions 2015-12-18 14:59:34 +01:00
css.c s390/cio: introduce io_subchannel_type 2017-06-12 16:26:01 +02:00
css.h s390/cio: remove unused struct member 2017-01-16 07:27:53 +01:00
device.c s390/cio: introduce io_subchannel_type 2017-06-12 16:26:01 +02:00
device.h s390/cio: clean up DEV_STATE_SENSE_PGID 2016-10-28 10:09:03 +02:00
device_fsm.c s390: cio: introduce cio_cancel_halt_clear 2017-03-31 12:55:02 +02:00
device_id.c
device_ops.c s390: cio: make it explicitly non-modular 2016-10-31 17:55:32 +01:00
device_pgid.c
device_status.c s390/cio: stop using subchannel_id from ccw_device_private 2016-08-08 15:41:32 +02:00
eadm_sch.c block: introduce new block status code type 2017-06-09 09:27:32 -06:00
eadm_sch.h
fcx.c
idset.c
idset.h s390: use canonical include guard style 2016-06-13 15:58:17 +02:00
io_sch.h s390/cio: remove subchannel_id from ccw_device_private 2016-08-08 15:41:33 +02:00
ioasm.c s390/chsc: Add exception handler for CHSC instruction 2017-02-23 10:06:38 +01:00
ioasm.h s390/cio: Change I/O instructions from inline to normal functions 2015-12-18 14:59:37 +01:00
isc.c
itcw.c
Makefile vfio: ccw: introduce a finite state machine 2017-03-31 12:55:11 +02:00
orb.h
qdio.h
qdio_debug.c
qdio_debug.h s390/qdio: increase string buffer size 2017-05-09 10:44:37 +02:00
qdio_main.c s390/qdio: improve some debug prints 2017-02-03 13:50:23 +01:00
qdio_setup.c
qdio_thinint.c sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h> 2017-03-02 08:42:38 +01:00
scm.c block: introduce new block status code type 2017-06-09 09:27:32 -06:00
trace.c s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
trace.h s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
vfio_ccw_cp.c vfio: ccw: fix bad ptr math for TIC cda translation 2017-07-24 09:54:37 +02:00
vfio_ccw_cp.h vfio: ccw: introduce channel program interfaces 2017-03-31 12:55:05 +02:00
vfio_ccw_drv.c s390/vfio_ccw: remove unused variable 2017-07-05 07:35:29 +02:00
vfio_ccw_fsm.c vfio: ccw: remove unnecessary NULL checks of a pointer 2017-04-12 12:33:36 +02:00
vfio_ccw_ops.c s390/vfio_ccw: make some symbols static 2017-05-22 15:37:11 +02:00
vfio_ccw_private.h vfio: ccw: introduce a finite state machine 2017-03-31 12:55:11 +02:00