diff --git a/block/partitions/core.c b/block/partitions/core.c index dc60ecf46fe6..b5acf9914f6e 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -291,8 +291,11 @@ static void delete_partition(struct block_device *part) __invalidate_device(part, true); xa_erase(&part->bd_disk->part_tbl, part->bd_partno); - kobject_put(part->bd_holder_dir); - device_del(&part->bd_device); + + if (part->bd_holder_dir == NULL) { + kobject_put(part->bd_holder_dir); + device_del(&part->bd_device); + } /* * Remove the block device from the inode hash, so that it cannot be