diff options
author | Christoph Hellwig <hch@lst.de> | 2022-07-21 15:09:14 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-07-21 10:52:12 -0600 |
commit | cfee7e4de2870017a4cbfdcf2d17329cc025b742 (patch) | |
tree | 01211396be7cf0212800601453ce05b20ee40536 /drivers/block/ublk_drv.c | |
parent | 34d8f2bea52928626aefd6f7e0ba7e69f67c8e62 (diff) |
ublk: fold __ublk_create_dev into ublk_ctrl_add_dev
Fold __ublk_create_dev into its only caller to avoid the packing and
unpacking of the return value into an ERR_PTR.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: ZiyangZhang <ZiyangZhang@linux.alibaba.com>
Link: https://lore.kernel.org/r/20220721130916.1869719-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block/ublk_drv.c')
-rw-r--r-- | drivers/block/ublk_drv.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 2032d677b9f1..b8ac7b508029 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1017,23 +1017,6 @@ static int __ublk_alloc_dev_number(struct ublk_device *ub, int idx) return err; } -static struct ublk_device *__ublk_create_dev(int idx) -{ - struct ublk_device *ub = NULL; - int ret; - - ub = kzalloc(sizeof(*ub), GFP_KERNEL); - if (!ub) - return ERR_PTR(-ENOMEM); - - ret = __ublk_alloc_dev_number(ub, idx); - if (ret < 0) { - kfree(ub); - return ERR_PTR(ret); - } - return ub; -} - static void __ublk_destroy_dev(struct ublk_device *ub) { spin_lock(&ublk_idr_lock); @@ -1357,9 +1340,14 @@ static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd) if (ret) return ret; - ub = __ublk_create_dev(header->dev_id); - if (IS_ERR(ub)) { - ret = PTR_ERR(ub); + ret = -ENOMEM; + ub = kzalloc(sizeof(*ub), GFP_KERNEL); + if (!ub) + goto out_unlock; + + ret = __ublk_alloc_dev_number(ub, header->dev_id); + if (ret < 0) { + kfree(ub); goto out_unlock; } |