[PATCH] blktests: src/miniublk.c: fix segment fault when io_uring is disabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When io_uring is disabled, ublk_ctrl_init() will return NULL, so we
have to check the result.

Fixes segment fault reported from Yi.

Reported-by: Zhang Yi <yi.zhang@xxxxxxxxxx>
Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx>
---
 src/miniublk.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/miniublk.c b/src/miniublk.c
index 73791fd..f98f850 100644
--- a/src/miniublk.c
+++ b/src/miniublk.c
@@ -1136,9 +1136,14 @@ static int ublk_stop_io_daemon(const struct ublk_dev *dev)
 static int __cmd_dev_del(int number, bool log)
 {
 	struct ublk_dev *dev;
-	int ret;
+	int ret = -ENODEV;
 
 	dev = ublk_ctrl_init();
+	if (!dev) {
+		ublk_err("del dev %d failed\n", number);
+		goto fail;
+	}
+
 	dev->dev_info.dev_id = number;
 
 	ret = ublk_ctrl_get_info(dev);
@@ -1208,8 +1213,14 @@ static int cmd_dev_del(int argc, char *argv[])
 
 static int __cmd_dev_list(int number, bool log)
 {
-	struct ublk_dev *dev = ublk_ctrl_init();
-	int ret;
+	struct ublk_dev *dev;
+	int ret = -ENODEV;
+
+	dev = ublk_ctrl_init();
+	if (!dev) {
+		ublk_err("list dev %d failed\n", number);
+		goto exit;
+	}
 
 	dev->dev_info.dev_id = number;
 
@@ -1223,7 +1234,7 @@ static int __cmd_dev_list(int number, bool log)
 	}
 
 	ublk_ctrl_deinit(dev);
-
+exit:
 	return ret;
 }
 
-- 
2.47.0





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux