diff options
author | Luis Chamberlain <mcgrof@kernel.org> | 2021-11-03 16:04:24 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-11-04 05:48:49 -0600 |
commit | 2762ff06aa49e3a13fb4b779120f4f8c12c39fd1 (patch) | |
tree | 2f5e5bfcba74ead40d1cdc4f2f35627873e8ef51 /drivers/nvdimm | |
parent | 18c6c96897a3b1ba44ab4df7324bf0b3454e090b (diff) | |
download | linux-stable-2762ff06aa49e3a13fb4b779120f4f8c12c39fd1.tar.gz linux-stable-2762ff06aa49e3a13fb4b779120f4f8c12c39fd1.tar.bz2 linux-stable-2762ff06aa49e3a13fb4b779120f4f8c12c39fd1.zip |
nvdimm/btt: use goto error labels on btt_blk_init()
This will make it easier to share common error paths.
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20211103230437.1639990-2-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/nvdimm')
-rw-r--r-- | drivers/nvdimm/btt.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c index 9b9d5e506e11..5cb6d7ac6e36 100644 --- a/drivers/nvdimm/btt.c +++ b/drivers/nvdimm/btt.c @@ -1519,6 +1519,7 @@ static int btt_blk_init(struct btt *btt) { struct nd_btt *nd_btt = btt->nd_btt; struct nd_namespace_common *ndns = nd_btt->ndns; + int rc = -ENOMEM; btt->btt_disk = blk_alloc_disk(NUMA_NO_NODE); if (!btt->btt_disk) @@ -1534,19 +1535,22 @@ static int btt_blk_init(struct btt *btt) blk_queue_flag_set(QUEUE_FLAG_NONROT, btt->btt_disk->queue); if (btt_meta_size(btt)) { - int rc = nd_integrity_init(btt->btt_disk, btt_meta_size(btt)); - - if (rc) { - blk_cleanup_disk(btt->btt_disk); - return rc; - } + rc = nd_integrity_init(btt->btt_disk, btt_meta_size(btt)); + if (rc) + goto out_cleanup_disk; } + set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9); device_add_disk(&btt->nd_btt->dev, btt->btt_disk, NULL); + btt->nd_btt->size = btt->nlba * (u64)btt->sector_size; nvdimm_check_and_set_ro(btt->btt_disk); return 0; + +out_cleanup_disk: + blk_cleanup_disk(btt->btt_disk); + return rc; } static void btt_blk_cleanup(struct btt *btt) |