projects
/
GitHub
/
LineageOS
/
android_kernel_samsung_universal7580.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
144749e
)
dm: hold suspend_lock while suspending device during device deletion
author
Mikulas Patocka
<mpatocka@redhat.com>
Fri, 27 Feb 2015 19:04:27 +0000
(14:04 -0500)
committer
Danny Wood
<danwood76@gmail.com>
Tue, 29 Jan 2019 13:07:39 +0000
(13:07 +0000)
commit
ab7c7bb6f4ab95dbca96fcfc4463cd69843e3e24
upstream.
__dm_destroy() must take the suspend_lock so that its presuspend and
postsuspend calls do not race with an internal suspend.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/dm.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/md/dm.c
b/drivers/md/dm.c
index a87f0c42cb8b2259f89ce8826d90569be62da5fd..f69fed826a564be1b40ed133a04b6c0de67ae84a 100644
(file)
--- a/
drivers/md/dm.c
+++ b/
drivers/md/dm.c
@@
-2333,10
+2333,16
@@
static void __dm_destroy(struct mapped_device *md, bool wait)
set_bit(DMF_FREEING, &md->flags);
spin_unlock(&_minor_lock);
+ /*
+ * Take suspend_lock so that presuspend and postsuspend methods
+ * do not race with internal suspend.
+ */
+ mutex_lock(&md->suspend_lock);
if (!dm_suspended_md(md)) {
dm_table_presuspend_targets(map);
dm_table_postsuspend_targets(map);
}
+ mutex_unlock(&md->suspend_lock);
/*
* Rare, but there may be I/O requests still going to complete,