From: Jason Wang <jasowang@xxxxxxxxxx> Date: Tue, 22 May 2018 19:58:57 +0800 > 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@xxxxxxxxx> > Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API") > Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx> Applied and queued up for -stable.