https://github.com/torvalds/linux
Revision 1b15ad683ab42a203f98b67045b40720e99d0e9a authored by Jason Wang on 22 May 2018, 11:58:57 UTC, committed by David S. Miller on 25 May 2018, 02:09:51 UTC
DaeRyong Jeong reports a race between vhost_dev_cleanup() and
vhost_process_iotlb_msg():

Thread interleaving:
CPU0 (vhost_process_iotlb_msg)			CPU1 (vhost_dev_cleanup)
(In the case of both VHOST_IOTLB_UPDATE and
VHOST_IOTLB_INVALIDATE)

=====						=====
						vhost_umem_clean(dev->iotlb);
if (!dev->iotlb) {
	        ret = -EFAULT;
		        break;
}
						dev->iotlb = NULL;

The reason is we don't synchronize between them, fixing by protecting
vhost_process_iotlb_msg() with dev mutex.

Reported-by: DaeRyong Jeong <threeearcat@gmail.com>
Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API")
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent d681bc0
History
Tip revision: 1b15ad683ab42a203f98b67045b40720e99d0e9a authored by Jason Wang on 22 May 2018, 11:58:57 UTC
vhost: synchronize IOTLB message with dev cleanup
Tip revision: 1b15ad6
File Mode Size
fc
fc_encode.h -rw-r--r-- 21.6 KB
fc_frame.h -rw-r--r-- 6.9 KB
fcoe_sysfs.h -rw-r--r-- 3.8 KB
iscsi_if.h -rw-r--r-- 26.1 KB
iscsi_proto.h -rw-r--r-- 16.1 KB
iser.h -rw-r--r-- 2.3 KB
libfc.h -rw-r--r-- 31.7 KB
libfcoe.h -rw-r--r-- 14.0 KB
libiscsi.h -rw-r--r-- 14.3 KB
libiscsi_tcp.h -rw-r--r-- 4.3 KB
libsas.h -rw-r--r-- 18.5 KB
osd_attributes.h -rw-r--r-- 15.0 KB
osd_initiator.h -rw-r--r-- 16.3 KB
osd_ore.h -rw-r--r-- 5.4 KB
osd_protocol.h -rw-r--r-- 17.6 KB
osd_sec.h -rw-r--r-- 1.5 KB
osd_sense.h -rw-r--r-- 9.9 KB
osd_types.h -rw-r--r-- 1020 bytes
sas.h -rw-r--r-- 13.2 KB
sas_ata.h -rw-r--r-- 2.7 KB
scsi.h -rw-r--r-- 8.8 KB
scsi_bsg_iscsi.h -rw-r--r-- 2.8 KB
scsi_cmnd.h -rw-r--r-- 9.7 KB
scsi_common.h -rw-r--r-- 2.1 KB
scsi_dbg.h -rw-r--r-- 2.1 KB
scsi_device.h -rw-r--r-- 20.5 KB
scsi_devinfo.h -rw-r--r-- 2.5 KB
scsi_dh.h -rw-r--r-- 3.2 KB
scsi_driver.h -rw-r--r-- 859 bytes
scsi_eh.h -rw-r--r-- 1.6 KB
scsi_host.h -rw-r--r-- 26.8 KB
scsi_ioctl.h -rw-r--r-- 1.3 KB
scsi_proto.h -rw-r--r-- 10.7 KB
scsi_request.h -rw-r--r-- 667 bytes
scsi_tcq.h -rw-r--r-- 1.0 KB
scsi_transport.h -rw-r--r-- 3.2 KB
scsi_transport_fc.h -rw-r--r-- 26.5 KB
scsi_transport_iscsi.h -rw-r--r-- 17.1 KB
scsi_transport_sas.h -rw-r--r-- 6.8 KB
scsi_transport_spi.h -rw-r--r-- 7.2 KB
scsi_transport_srp.h -rw-r--r-- 4.8 KB
scsicam.h -rw-r--r-- 713 bytes
sg.h -rw-r--r-- 12.1 KB
srp.h -rw-r--r-- 6.5 KB
viosrp.h -rw-r--r-- 6.1 KB

back to top