android_kernel_motorola_sm6375/drivers/md
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christoph Hellwig 2b5befcd40 md: fix a lock order reversal in md_alloc
[ Upstream commit 7df835a32a8bedf7ce88efcfa7c9b245b52ff139 ]

Commit b0140891a8 ("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: b0140891a8 ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-30 10:09:24 +02:00
..
bcache bcache: add proper error unwinding in bcache_device_init 2021-09-15 09:47:27 +02:00
persistent-data dm btree remove: assign new_root only when removal succeeds 2021-07-19 08:53:17 +02:00
dm-bio-prison-v1.c
dm-bio-prison-v1.h
dm-bio-prison-v2.c
dm-bio-prison-v2.h
dm-bio-record.h
dm-bufio.c dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size 2021-03-09 11:09:37 +01:00
dm-builtin.c
dm-cache-background-tracker.c
dm-cache-background-tracker.h
dm-cache-block-types.h
dm-cache-metadata.c dm cache metadata: Avoid returning cmd->bm wild pointer on error 2020-09-09 19:12:35 +02:00
dm-cache-metadata.h
dm-cache-policy-internal.h
dm-cache-policy-smq.c
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c
dm-clone-metadata.c
dm-clone-metadata.h
dm-clone-target.c
dm-core.h dm: fix deadlock when swapping to encrypted device 2021-03-04 10:26:51 +01:00
dm-crypt.c dm crypt: Avoid percpu_counter spinlock contention in crypt_page_alloc() 2021-09-22 12:26:21 +02:00
dm-delay.c
dm-dust.c
dm-era-target.c dm era: Update in-core bitset after committing the metadata 2021-03-04 10:26:53 +01:00
dm-exception-store.c
dm-exception-store.h
dm-flakey.c
dm-init.c
dm-integrity.c dm integrity: fix missing goto in bitmap_flush_interval error handling 2021-05-11 14:04:18 +02:00
dm-io.c
dm-ioctl.c dm ioctl: fix out of bounds array access when no devices 2021-03-30 14:35:24 +02:00
dm-kcopyd.c
dm-linear.c
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c
dm-log.c
dm-mpath.c dm mpath: fix racey management of PG initialization 2020-09-09 19:12:35 +02:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c dm raid: fix inconclusive reshape layout on fast raid4/5/6 table reload sequences 2021-05-11 14:04:15 +02:00
dm-raid1.c
dm-region-hash.c
dm-round-robin.c
dm-rq.c dm rq: fix double free of blk_mq_tag_set in dev remove after table load fails 2021-05-11 14:04:18 +02:00
dm-rq.h
dm-service-time.c
dm-snap-persistent.c
dm-snap-transient.c
dm-snap.c dm snapshot: properly fix a crash when an origin has no snapshots 2021-06-03 08:59:02 +02:00
dm-stats.c
dm-stats.h
dm-stripe.c
dm-switch.c
dm-sysfs.c
dm-table.c dm table: fix zoned iterate_devices based device capability checks 2021-03-11 14:06:49 +01:00
dm-target.c
dm-thin-metadata.c dm thin metadata: Fix use-after-free in dm_bm_set_read_only 2020-09-09 19:12:36 +02:00
dm-thin-metadata.h
dm-thin.c
dm-uevent.c
dm-uevent.h
dm-unstripe.c
dm-verity-fec.c dm verity fec: fix misaligned RS roots IO 2021-04-21 12:56:15 +02:00
dm-verity-fec.h dm verity fec: fix misaligned RS roots IO 2021-04-21 12:56:15 +02:00
dm-verity-target.c dm verity: fix DM_VERITY_OPTS_MAX value 2021-03-30 14:35:24 +02:00
dm-verity-verify-sig.c dm verity: fix require_signatures module_param permissions 2021-06-16 11:59:37 +02:00
dm-verity-verify-sig.h
dm-verity.h
dm-writecache.c dm writecache: return the exact table values that were set 2021-07-25 14:35:14 +02:00
dm-zero.c
dm-zoned-metadata.c dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone 2020-06-24 17:50:31 +02:00
dm-zoned-reclaim.c dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone 2020-06-24 17:50:31 +02:00
dm-zoned-target.c dm zoned: assign max_io_len correctly 2020-07-09 09:37:57 +02:00
dm-zoned.h
dm.c dm table: fix DAX iterate_devices based device capability checks 2021-03-11 14:06:49 +01:00
dm.h dm table: fix DAX iterate_devices based device capability checks 2021-03-11 14:06:49 +01:00
Kconfig dm integrity: select CRYPTO_SKCIPHER 2021-01-27 11:47:42 +01:00
Makefile
md-bitmap.c md/bitmap: wait for external bitmap writes to complete during tear down 2021-05-14 09:44:12 +02:00
md-bitmap.h
md-cluster.c md/cluster: fix deadlock when node is doing resync job 2020-12-30 11:51:45 +01:00
md-cluster.h
md-faulty.c
md-linear.c
md-linear.h
md-multipath.c
md-multipath.h
md.c md: fix a lock order reversal in md_alloc 2021-09-30 10:09:24 +02:00
md.h
raid0.c
raid0.h
raid1-10.c
raid1.c md/raid10: properly indicate failure when ending a failed write request 2021-08-12 13:21:03 +02:00
raid1.h
raid5-cache.c
raid5-log.h
raid5-ppl.c
raid5.c md/raid5: fix oops during stripe resizing 2020-11-05 11:43:22 +01:00
raid5.h
raid10.c md/raid10: properly indicate failure when ending a failed write request 2021-08-12 13:21:03 +02:00
raid10.h