mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
nvme-multipath: fix leak on try_module_get failure
We need to fall back to the synchronous removal if we can't get a
reference on the module needed for the deferred removal.
Fixes: 62188639ec ("nvme-multipath: introduce delayed removal of the multipath head node")
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
dd677d0598
commit
0f5197ea9a
1 changed files with 5 additions and 7 deletions
|
|
@ -1310,13 +1310,11 @@ void nvme_mpath_remove_disk(struct nvme_ns_head *head)
|
|||
if (!list_empty(&head->list))
|
||||
goto out;
|
||||
|
||||
if (head->delayed_removal_secs) {
|
||||
/*
|
||||
* Ensure that no one could remove this module while the head
|
||||
* remove work is pending.
|
||||
*/
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
goto out;
|
||||
/*
|
||||
* Ensure that no one could remove this module while the head
|
||||
* remove work is pending.
|
||||
*/
|
||||
if (head->delayed_removal_secs && try_module_get(THIS_MODULE)) {
|
||||
mod_delayed_work(nvme_wq, &head->remove_work,
|
||||
head->delayed_removal_secs * HZ);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue