dm mpath: flush keventd queue in destructor
The commit fe9cf30eb8
moves dm table event
submission from kmultipath queue to kernel kevent queue to avoid a
deadlock.
There is a possibility of race condition because kevent queue is not flushed
in the multipath destructor. The scenario is:
- some event happens and is queued to keventd
- keventd thread is delayed due to scheuling latency or some other work
- multipath device is destroyed
- keventd now attempts to process work_struct that is residing in already
released memory.
The patch flushes the keventd queue in multipath constructor.
I've already fixed similar bug in dm-raid1.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Cc: stable@kernel.org
This commit is contained in:
parent
a72986c562
commit
53b351f972
|
@ -848,6 +848,7 @@ static void multipath_dtr(struct dm_target *ti)
|
|||
|
||||
flush_workqueue(kmpath_handlerd);
|
||||
flush_workqueue(kmultipathd);
|
||||
flush_scheduled_work();
|
||||
free_multipath(m);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue