]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Don't seg fault if given device is not char/block device
authorNilay Shroff <nilay@linux.ibm.com>
Sun, 17 Mar 2024 11:36:22 +0000 (17:06 +0530)
committerDaniel Wagner <dwagner@suse.de>
Wed, 20 Mar 2024 07:15:07 +0000 (08:15 +0100)
If the given device name is not char/block device then in
open_dev_direct() set errno to ENODEV and err to -1 before
returning to the dev_fd(). This would then ensure that in
case of error, dev_fd() returns the corerct negative error
code back to its callers. So now the callers of dev_fd()
would handle the error appropriately instead of try
accessing the nvme_dev which would be NULL.

Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
nvme.c

diff --git a/nvme.c b/nvme.c
index d6a45fcf610e921ae2d3db391fd90035599f80e4..dc065742d5701185c370737e13e9278f8044d241 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -254,7 +254,8 @@ static int open_dev_direct(struct nvme_dev **devp, char *devstr, int flags)
        }
        if (!is_chardev(dev) && !is_blkdev(dev)) {
                nvme_show_error("%s is not a block or character device", devstr);
-               err = -ENODEV;
+               errno = ENODEV;
+               err = -1;
                goto err_close;
        }
        *devp = dev;