Commit 7df835a
md: fix a lock order reversal in md_alloc
Commit b014089 ("md: Fix race when creating a new md device.")
not only moved assigning mddev->gendisk before calling add_disk, which
fixes the races described in the commit log, but also added a
mddev->open_mutex critical section over add_disk and creation of the
md kobj. Adding a kobject after add_disk is racy vs deleting the gendisk
right after adding it, but md already prevents against that by holding
a mddev->active reference.
On the other hand taking this lock added a lock order reversal with what
is not disk->open_mutex (used to be bdev->bd_mutex when the commit was
added) for partition devices, which need that lock for the internal open
for the partition scan, and a recent commit also takes it for
non-partitioned devices, leading to further lockdep splatter.
Fixes: b014089 ("md: Fix race when creating a new md device.")
Fixes: d626338 ("block: support delayed holder registration")
Reported-by: syzbot+fadc0aaf497e6a493b9f@syzkaller.appspotmail.com
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: syzbot+fadc0aaf497e6a493b9f@syzkaller.appspotmail.com
Reviewed-by: NeilBrown <neilb@suse.de>
Signed-off-by: Song Liu <songliubraving@fb.com>1 parent 858560b commit 7df835a
1 file changed
Lines changed: 0 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5700 | 5700 | | |
5701 | 5701 | | |
5702 | 5702 | | |
5703 | | - | |
5704 | | - | |
5705 | | - | |
5706 | | - | |
5707 | 5703 | | |
5708 | 5704 | | |
5709 | 5705 | | |
| |||
5718 | 5714 | | |
5719 | 5715 | | |
5720 | 5716 | | |
5721 | | - | |
5722 | 5717 | | |
5723 | 5718 | | |
5724 | 5719 | | |
| |||
0 commit comments