lightnvm: prevent race condition on pblk remove
When we trigger nvm target remove during device hot unplug, there is a probability to hit a general protection fault. This is caused by use of nvm_dev thay may be freed from another (hot unplug) thread (in the nvm_unregister function). Introduce lock in nvme_ioctl_dev_remove function to prevent this situation. Signed-off-by: Marcin Dziegielewski <marcin.dziegielewski@intel.com> Reviewed-by: Javier González <javier@javigon.com> Signed-off-by: Matias Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
4bbae69922
commit
f41d427cdd
|
@ -1340,11 +1340,13 @@ static long nvm_ioctl_dev_remove(struct file *file, void __user *arg)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
down_read(&nvm_lock);
|
||||
list_for_each_entry(dev, &nvm_devices, devices) {
|
||||
ret = nvm_remove_tgt(dev, &remove);
|
||||
if (!ret)
|
||||
break;
|
||||
}
|
||||
up_read(&nvm_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue