mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
Merge branch 'md-fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/song/md into block-6.3
Pull MD fixes from Song: "This set contains two fixes for old issues (by Neil) and one fix for 6.3 (by Xiao)." * 'md-fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/song/md: md: select BLOCK_LEGACY_AUTOLOAD md: avoid signed overflow in slot_store() md: Free resources in __md_stop
This commit is contained in:
commit
23e5b9307e
@ -15,6 +15,10 @@ if MD
|
||||
config BLK_DEV_MD
|
||||
tristate "RAID support"
|
||||
select BLOCK_HOLDER_DEPRECATED if SYSFS
|
||||
# BLOCK_LEGACY_AUTOLOAD requirement should be removed
|
||||
# after relevant mdadm enhancements - to make "names=yes"
|
||||
# the default - are widely available.
|
||||
select BLOCK_LEGACY_AUTOLOAD
|
||||
help
|
||||
This driver lets you combine several hard disk partitions into one
|
||||
logical block device. This can be used to simply append one
|
||||
|
@ -3128,6 +3128,9 @@ slot_store(struct md_rdev *rdev, const char *buf, size_t len)
|
||||
err = kstrtouint(buf, 10, (unsigned int *)&slot);
|
||||
if (err < 0)
|
||||
return err;
|
||||
if (slot < 0)
|
||||
/* overflow */
|
||||
return -ENOSPC;
|
||||
}
|
||||
if (rdev->mddev->pers && slot == -1) {
|
||||
/* Setting 'slot' on an active array requires also
|
||||
@ -6256,6 +6259,11 @@ static void __md_stop(struct mddev *mddev)
|
||||
mddev->to_remove = &md_redundancy_group;
|
||||
module_put(pers->owner);
|
||||
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
|
||||
|
||||
percpu_ref_exit(&mddev->writes_pending);
|
||||
percpu_ref_exit(&mddev->active_io);
|
||||
bioset_exit(&mddev->bio_set);
|
||||
bioset_exit(&mddev->sync_set);
|
||||
}
|
||||
|
||||
void md_stop(struct mddev *mddev)
|
||||
@ -6265,10 +6273,6 @@ void md_stop(struct mddev *mddev)
|
||||
*/
|
||||
__md_stop_writes(mddev);
|
||||
__md_stop(mddev);
|
||||
percpu_ref_exit(&mddev->writes_pending);
|
||||
percpu_ref_exit(&mddev->active_io);
|
||||
bioset_exit(&mddev->bio_set);
|
||||
bioset_exit(&mddev->sync_set);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(md_stop);
|
||||
@ -7839,11 +7843,6 @@ static void md_free_disk(struct gendisk *disk)
|
||||
{
|
||||
struct mddev *mddev = disk->private_data;
|
||||
|
||||
percpu_ref_exit(&mddev->writes_pending);
|
||||
percpu_ref_exit(&mddev->active_io);
|
||||
bioset_exit(&mddev->bio_set);
|
||||
bioset_exit(&mddev->sync_set);
|
||||
|
||||
mddev_free(mddev);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user