summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2022-07-21 16:09:14 +0300
committerJens Axboe <axboe@kernel.dk>2022-07-21 19:52:12 +0300
commitcfee7e4de2870017a4cbfdcf2d17329cc025b742 (patch)
tree01211396be7cf0212800601453ce05b20ee40536 /drivers/block
parent34d8f2bea52928626aefd6f7e0ba7e69f67c8e62 (diff)
downloadlinux-cfee7e4de2870017a4cbfdcf2d17329cc025b742.tar.xz
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')
-rw-r--r--drivers/block/ublk_drv.c28
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;
}