Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nvdimm/pmem: use add_disk() error handling

Now that device_add_disk() supports returning an error, use
that. We must unwind alloc_dax() on error.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20211103230437.1639990-7-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Luis Chamberlain and committed by
Jens Axboe
5a192ccc accf58af

+7 -1
+7 -1
drivers/nvdimm/pmem.c
··· 491 491 dax_write_cache(dax_dev, nvdimm_has_cache(nd_region)); 492 492 pmem->dax_dev = dax_dev; 493 493 494 - device_add_disk(dev, disk, pmem_attribute_groups); 494 + rc = device_add_disk(dev, disk, pmem_attribute_groups); 495 + if (rc) 496 + goto out_cleanup_dax; 495 497 if (devm_add_action_or_reset(dev, pmem_release_disk, pmem)) 496 498 return -ENOMEM; 497 499 ··· 504 502 if (!pmem->bb_state) 505 503 dev_warn(dev, "'badblocks' notification disabled\n"); 506 504 return 0; 505 + 506 + out_cleanup_dax: 507 + kill_dax(pmem->dax_dev); 508 + put_dax(pmem->dax_dev); 507 509 out: 508 510 blk_cleanup_disk(pmem->disk); 509 511 return rc;