If there is DM device with no table present, do not try to wait for change event. Otherwise it can wait forever and block already removed device. Simple reproducible: dmsetup create x --notable dmsetup wait x 0 & dmsetup remove x Now it waits for device, which is no longer accesible through dm-ioctl. Signed-off-by: Milan Broz <mbroz@xxxxxxxxxx> --- drivers/md/dm-ioctl.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index 1d66932..a0ac379 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -1023,6 +1023,15 @@ static int dev_wait(struct dm_ioctl *param, size_t param_size) return -ENXIO; /* + * Do not wait if no table present + */ + if (!(table = dm_get_live_or_inactive_table(md, param))) { + r = -ENXIO; + goto out; + } + dm_table_put(table); + + /* * Wait for a notification event */ if (dm_wait_event(md, param->event_nr)) { -- 1.6.6 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel