diff --git a/block/genhd.c b/block/genhd.c index 59a1395eedac45e3e5d6326ed2956caf8a7de7c8..85df45292dbaf97bc94e6bc7cd18380343c17928 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -1110,8 +1110,7 @@ static void disk_release(struct device *dev) disk_release_events(disk); kfree(disk->random); disk_replace_part_tbl(disk, NULL); - free_part_stats(&disk->part0); - free_part_info(&disk->part0); + hd_free_part(&disk->part0); if (disk->queue) blk_put_queue(disk->queue); kfree(disk); diff --git a/block/partition-generic.c b/block/partition-generic.c index 0d9e5f97f0a8afaa397530a77684bacc7b22ab26..eca0d02a607c2ab555f66c4bdd2de3701c3788f4 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -212,8 +212,7 @@ static void part_release(struct device *dev) { struct hd_struct *p = dev_to_part(dev); blk_free_devt(dev->devt); - free_part_stats(p); - free_part_info(p); + hd_free_part(p); kfree(p); } diff --git a/include/linux/genhd.h b/include/linux/genhd.h index ec274e0f4ed28d1834bb7b3115bd1010f92396a8..a221220ffcb2dbf43b520f69056b9df76dcfb4f8 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -663,6 +663,12 @@ static inline void hd_struct_put(struct hd_struct *part) __delete_partition(part); } +static inline void hd_free_part(struct hd_struct *part) +{ + free_part_stats(part); + free_part_info(part); +} + /* * Any access of part->nr_sects which is not protected by partition * bd_mutex or gendisk bdev bd_mutex, should be done using this