+++ /dev/null
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * RDMA Network Block Driver
- *
- * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
- * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
- * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
- */
-#undef pr_fmt
-#define pr_fmt(fmt) KBUILD_MODNAME " L" __stringify(__LINE__) ": " fmt
-
-#include "rnbd-srv-dev.h"
-#include "rnbd-log.h"
-
-struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags)
-{
-       struct rnbd_dev *dev;
-       int ret;
-
-       dev = kzalloc(sizeof(*dev), GFP_KERNEL);
-       if (!dev)
-               return ERR_PTR(-ENOMEM);
-
-       dev->bdev = blkdev_get_by_path(path, flags, THIS_MODULE);
-       ret = PTR_ERR_OR_ZERO(dev->bdev);
-       if (ret)
-               goto err;
-
-       dev->blk_open_flags = flags;
-
-       return dev;
-
-err:
-       kfree(dev);
-       return ERR_PTR(ret);
-}
-
-void rnbd_dev_close(struct rnbd_dev *dev)
-{
-       blkdev_put(dev->bdev, dev->blk_open_flags);
-       kfree(dev);
-}
 
        rnbd_put_sess_dev(sess_dev);
        wait_for_completion(&dc); /* wait for inflights to drop to zero */
 
-       rnbd_dev_close(sess_dev->rnbd_dev);
+       blkdev_put(sess_dev->rnbd_dev->bdev,
+                  sess_dev->rnbd_dev->blk_open_flags);
+       kfree(sess_dev->rnbd_dev);
        mutex_lock(&sess_dev->dev->lock);
        list_del(&sess_dev->dev_list);
        if (sess_dev->open_flags & FMODE_WRITE)
                goto reject;
        }
 
-       rnbd_dev = rnbd_dev_open(full_path, open_flags);
-       if (IS_ERR(rnbd_dev)) {
-               pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %ld\n",
-                      full_path, srv_sess->sessname, PTR_ERR(rnbd_dev));
-               ret = PTR_ERR(rnbd_dev);
+       rnbd_dev = kzalloc(sizeof(*rnbd_dev), GFP_KERNEL);
+       if (!rnbd_dev) {
+               ret = -ENOMEM;
+               goto free_path;
+       }
+
+       rnbd_dev->blk_open_flags = open_flags;
+       rnbd_dev->bdev = blkdev_get_by_path(full_path, open_flags, THIS_MODULE);
+       if (IS_ERR(rnbd_dev->bdev)) {
+               ret = PTR_ERR(rnbd_dev->bdev);
+               pr_err("Opening device '%s' on session %s failed, failed to open the block device, err: %d\n",
+                      full_path, srv_sess->sessname, ret);
+               kfree(rnbd_dev);
                goto free_path;
        }
 
        }
        rnbd_put_srv_dev(srv_dev);
 rnbd_dev_close:
-       rnbd_dev_close(rnbd_dev);
+       blkdev_put(rnbd_dev->bdev, rnbd_dev->blk_open_flags);
+       kfree(rnbd_dev);
 free_path:
        kfree(full_path);
 reject: