Christoph Hellwig 7df835a32a md: fix a lock order reversal in md_alloc
Commit b0140891a8cea3 ("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: b0140891a8ce ("md: Fix race when creating a new md device.")
Fixes: d62633873590 ("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>
2021-09-22 08:45:58 -07:00
..
2021-08-16 10:50:33 -06:00
2021-08-10 13:32:40 -04:00
2021-09-02 12:51:41 -07:00
2021-02-26 15:49:51 -07:00
2021-08-09 11:50:43 -06:00
2021-09-09 11:39:57 -07:00
2021-09-09 11:39:57 -07:00
2021-06-04 12:07:37 -04:00
2021-08-16 10:50:32 -06:00
2021-08-10 13:32:40 -04:00
2020-12-16 13:09:32 -08:00
2021-09-22 08:45:58 -07:00
2021-08-12 10:29:36 -06:00
2021-08-30 19:01:46 -07:00
2021-06-14 22:32:07 -07:00
2019-03-12 10:15:18 -07:00
2021-08-30 19:01:46 -07:00
2021-06-14 22:32:07 -07:00