linux-stable/drivers/md
Li Nan f3a1787dc4 md: fix kmemleak of rdev->serial
commit 6cf3506587 upstream.

If kobject_add() is fail in bind_rdev_to_array(), 'rdev->serial' will be
alloc not be freed, and kmemleak occurs.

unreferenced object 0xffff88815a350000 (size 49152):
  comm "mdadm", pid 789, jiffies 4294716910
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace (crc f773277a):
    [<0000000058b0a453>] kmemleak_alloc+0x61/0xe0
    [<00000000366adf14>] __kmalloc_large_node+0x15e/0x270
    [<000000002e82961b>] __kmalloc_node.cold+0x11/0x7f
    [<00000000f206d60a>] kvmalloc_node+0x74/0x150
    [<0000000034bf3363>] rdev_init_serial+0x67/0x170
    [<0000000010e08fe9>] mddev_create_serial_pool+0x62/0x220
    [<00000000c3837bf0>] bind_rdev_to_array+0x2af/0x630
    [<0000000073c28560>] md_add_new_disk+0x400/0x9f0
    [<00000000770e30ff>] md_ioctl+0x15bf/0x1c10
    [<000000006cfab718>] blkdev_ioctl+0x191/0x3f0
    [<0000000085086a11>] vfs_ioctl+0x22/0x60
    [<0000000018b656fe>] __x64_sys_ioctl+0xba/0xe0
    [<00000000e54e675e>] do_syscall_64+0x71/0x150
    [<000000008b0ad622>] entry_SYSCALL_64_after_hwframe+0x6c/0x74

Fixes: 963c555e75 ("md: introduce mddev_create/destroy_wb_pool for the change of member device")
Signed-off-by: Li Nan <linan122@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20240208085556.2412922-1-linan666@huaweicloud.com
[ mddev_destroy_serial_pool third parameter was removed in mainline,
  where there is no need to suspend within this function anymore. ]
Signed-off-by: Jeremy Bongio <jbongio@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-05-17 11:51:06 +02:00
..
bcache bcache: avoid NULL checking to c->root in run_cache_set() 2023-12-20 15:17:40 +01:00
persistent-data dm space map common: add bounds check to sm_ll_lookup_bitmap() 2022-01-27 11:04:53 +01:00
Kconfig dm: make EBS depend on !HIGHMEM 2021-08-16 10:50:32 -06:00
Makefile dm ima: measure data on table load 2021-08-10 13:32:40 -04: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-builtin.c
dm-cache-background-tracker.c
dm-cache-background-tracker.h
dm-cache-block-types.h
dm-cache-metadata.c dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort 2023-01-12 11:58:52 +01:00
dm-cache-metadata.h
dm-cache-policy-internal.h
dm-cache-policy-smq.c dm cache policy smq: ensure IO doesn't prevent cleaner policy progress 2023-08-03 10:22:46 +02:00
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c dm cache: add cond_resched() to various workqueue loops 2023-03-10 09:39:55 +01:00
dm-clone-metadata.c
dm-clone-metadata.h
dm-clone-target.c dm clone: call kmem_cache_destroy() in dm_clone_init() error path 2023-05-11 23:00:40 +09:00
dm-core.h dm: limit the number of targets and parameter size area 2024-02-23 08:55:14 +01:00
dm-crypt.c dm-verity, dm-crypt: align "struct bvec_iter" correctly 2024-03-26 18:21:13 -04:00
dm-delay.c dm-delay: fix a race between delay_presuspend and delay_bio 2023-12-03 07:31:25 +01:00
dm-dust.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ebs-target.c - Add DM infrastructure for IMA-based remote attestion. These changes 2021-08-31 14:55:09 -07:00
dm-era-target.c dm era: commit metadata in postsuspend after worker stops 2022-06-29 09:03:20 +02:00
dm-exception-store.c
dm-exception-store.h
dm-flakey.c dm flakey: fix a crash with invalid table line 2023-05-11 23:00:40 +09:00
dm-ima.c integrity-v5.15 2021-09-02 12:51:41 -07:00
dm-ima.h dm ima: add version info to dm related events in ima log 2021-08-20 15:59:47 -04:00
dm-init.c dm init: add dm-mod.waitfor to wait for asynchronously probed block devices 2023-07-23 13:47:51 +02:00
dm-integrity.c dm integrity: fix out-of-range warning 2024-04-10 16:19:36 +02:00
dm-io-tracker.h
dm-io.c
dm-ioctl.c dm: limit the number of targets and parameter size area 2024-02-23 08:55:14 +01:00
dm-kcopyd.c
dm-linear.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-log-userspace-base.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-log.c dm mirror log: clear log bits up to BITS_PER_LONG boundary 2022-06-29 09:03:20 +02:00
dm-mpath.c dm ima: update dm target attributes for ima measurements 2021-08-20 16:07:36 -04:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-ps-historical-service-time.c dm mpath: only use ktime_get_ns() in historical selector 2022-04-20 09:34:13 +02:00
dm-ps-io-affinity.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-queue-length.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-round-robin.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-service-time.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-raid.c dm-raid: fix lockdep waring in "pers->hot_add_disk" 2024-04-10 16:18:39 +02:00
dm-raid1.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-region-hash.c
dm-rq.c dm: requeue IO if mapping table not yet available 2022-04-13 20:59:06 +02:00
dm-rq.h
dm-snap-persistent.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-snap-transient.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-snap.c dm snapshot: fix lockup in dm_exception_table_exit 2024-04-10 16:18:44 +02:00
dm-stats.c dm stats: check for and propagate alloc_percpu failure 2023-03-30 12:48:00 +02:00
dm-stats.h dm stats: check for and propagate alloc_percpu failure 2023-03-30 12:48:00 +02:00
dm-stripe.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-switch.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-sysfs.c
dm-table.c dm: limit the number of targets and parameter size area 2024-02-23 08:55:14 +01:00
dm-target.c
dm-thin-metadata.c dm thin metadata: check fail_io before using data_sm 2023-06-21 15:59:14 +02:00
dm-thin-metadata.h
dm-thin.c dm thin: fix deadlock when swapping to thin device 2023-03-30 12:47:56 +02:00
dm-uevent.c
dm-uevent.h
dm-unstripe.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-verity-fec.c dm-verity: align struct dm_verity_fec_io properly 2023-12-08 08:48:01 +01:00
dm-verity-fec.h
dm-verity-target.c dm verity: don't perform FEC for failed readahead IO 2023-12-08 08:48:01 +01:00
dm-verity-verify-sig.c
dm-verity-verify-sig.h
dm-verity.h dm-verity, dm-crypt: align "struct bvec_iter" correctly 2024-03-26 18:21:13 -04:00
dm-writecache.c dm writecache: set a default MAX_WRITEBACK_JOBS 2022-08-17 14:24:23 +02:00
dm-zero.c
dm-zone.c
dm-zoned-metadata.c
dm-zoned-reclaim.c
dm-zoned-target.c dm zoned: free dmz->ddev array in dmz_put_zoned_devices 2023-10-10 21:59:08 +02:00
dm-zoned.h
dm.c dm: call the resume method on internal suspend 2024-03-26 18:21:24 -04:00
dm.h dm: send just one event on resize, not two 2023-03-10 09:40:05 +01:00
md-autodetect.c
md-bitmap.c md/md-bitmap: remove unnecessary local variable in backlog_store() 2023-09-19 12:22:53 +02:00
md-bitmap.h
md-cluster.c
md-cluster.h
md-faulty.c
md-linear.c md: add error_handlers for raid0 and linear 2023-09-19 12:22:39 +02:00
md-linear.h
md-multipath.c
md-multipath.h
md.c md: fix kmemleak of rdev->serial 2024-05-17 11:51:06 +02:00
md.h md: add error_handlers for raid0 and linear 2023-09-19 12:22:39 +02:00
raid0.c md: raid0: account for split bio in iostat accounting 2023-09-19 12:22:40 +02:00
raid0.h md/raid0: add discard support for the 'original' layout 2023-07-23 13:47:51 +02:00
raid1-10.c md: drop queue limitation for RAID1 and RAID10 2023-05-11 23:00:29 +09:00
raid1.c md/raid1: fix error: ISO C90 forbids mixed declarations 2023-09-23 11:10:01 +02:00
raid1.h
raid5-cache.c
raid5-log.h
raid5-ppl.c
raid5.c Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"" 2024-01-25 14:52:56 -08:00
raid5.h
raid10.c md/raid10: prevent soft lockup while flush writes 2024-03-01 13:21:55 +01:00
raid10.h