dm ioctl: forbid messages to devices being deleted
Once we begin deleting a device, prevent any further messages being sent to targets of its table (to avoid races). Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
This commit is contained in:
committed by
Alasdair G Kergon
parent
432a212c0d
commit
c50abeb380
@@ -1303,6 +1303,11 @@ static int target_message(struct dm_ioctl *param, size_t param_size)
|
|||||||
if (!table)
|
if (!table)
|
||||||
goto out_argv;
|
goto out_argv;
|
||||||
|
|
||||||
|
if (dm_deleting_md(md)) {
|
||||||
|
r = -ENXIO;
|
||||||
|
goto out_table;
|
||||||
|
}
|
||||||
|
|
||||||
ti = dm_table_find_target(table, tmsg->sector);
|
ti = dm_table_find_target(table, tmsg->sector);
|
||||||
if (!dm_target_is_valid(ti)) {
|
if (!dm_target_is_valid(ti)) {
|
||||||
DMWARN("Target message sector outside device.");
|
DMWARN("Target message sector outside device.");
|
||||||
@@ -1314,6 +1319,7 @@ static int target_message(struct dm_ioctl *param, size_t param_size)
|
|||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out_table:
|
||||||
dm_table_put(table);
|
dm_table_put(table);
|
||||||
out_argv:
|
out_argv:
|
||||||
kfree(argv);
|
kfree(argv);
|
||||||
|
|||||||
Reference in New Issue
Block a user