X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=block%2Fgenhd.c;h=0c706f33a599a723fc56b0ef87bb58a71de2cd66;hb=36707bb2e7c6730d79d6cdc6d1475d3d7e94c518;hp=59a1395eedac45e3e5d6326ed2956caf8a7de7c8;hpb=f212bd95a9f62b7929c59b16e1d3bbde2fb4081d;p=firefly-linux-kernel-4.4.55.git diff --git a/block/genhd.c b/block/genhd.c index 59a1395eedac..0c706f33a599 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); @@ -1285,7 +1284,11 @@ struct gendisk *alloc_disk_node(int minors, int node_id) * converted to make use of bd_mutex and sequence counters. */ seqcount_init(&disk->part0.nr_sects_seq); - hd_ref_init(&disk->part0); + if (hd_ref_init(&disk->part0)) { + hd_free_part(&disk->part0); + kfree(disk); + return NULL; + } disk->minors = minors; rand_initialize_disk(disk);