Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rnbd: add error handling support for add_disk()

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20211015233028.2167651-9-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Luis Chamberlain and committed by
Jens Axboe
2e9e31be 66638f16

+9 -4
+9 -4
drivers/block/rnbd/rnbd-clt.c
··· 1384 1384 blk_queue_write_cache(dev->queue, dev->wc, dev->fua); 1385 1385 } 1386 1386 1387 - static void rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx) 1387 + static int rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx) 1388 1388 { 1389 + int err; 1390 + 1389 1391 dev->gd->major = rnbd_client_major; 1390 1392 dev->gd->first_minor = idx << RNBD_PART_BITS; 1391 1393 dev->gd->minors = 1 << RNBD_PART_BITS; ··· 1412 1410 1413 1411 if (!dev->rotational) 1414 1412 blk_queue_flag_set(QUEUE_FLAG_NONROT, dev->queue); 1415 - add_disk(dev->gd); 1413 + err = add_disk(dev->gd); 1414 + if (err) 1415 + blk_cleanup_disk(dev->gd); 1416 + 1417 + return err; 1416 1418 } 1417 1419 1418 1420 static int rnbd_client_setup_device(struct rnbd_clt_dev *dev) ··· 1432 1426 rnbd_init_mq_hw_queues(dev); 1433 1427 1434 1428 setup_request_queue(dev); 1435 - rnbd_clt_setup_gen_disk(dev, idx); 1436 - return 0; 1429 + return rnbd_clt_setup_gen_disk(dev, idx); 1437 1430 } 1438 1431 1439 1432 static struct rnbd_clt_dev *init_dev(struct rnbd_clt_session *sess,