CC: [email protected] CC: [email protected] TO: Luis Chamberlain <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git 20211103-for-axboe-add-disk-error-handling head: 649642134a84c5c09e9bd05c950972935307df17 commit: 649642134a84c5c09e9bd05c950972935307df17 [13/13] block: add __must_check for *add_disk*() callers :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: i386-randconfig-m021-20211103 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: block/genhd.c:482 device_add_disk() warn: missing error code 'ret' vim +/ret +482 block/genhd.c 9301fe73438499 block/genhd.c Christoph Hellwig 2020-09-21 390 ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 391 /** d1254a8749711e block/genhd.c Christoph Hellwig 2021-08-04 392 * device_add_disk - add disk information to kernel list e63a46bef01ff3 block/genhd.c Dan Williams 2016-06-15 393 * @parent: parent device for the disk ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 394 * @disk: per-device partitioning information fef912bf860e8e block/genhd.c Hannes Reinecke 2018-09-28 395 * @groups: Additional per-device sysfs groups ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 396 * ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 397 * This function registers the partitioning information in @disk ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 398 * with the kernel. ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 399 */ 649642134a84c5 block/genhd.c Luis Chamberlain 2021-07-15 400 int __must_check device_add_disk(struct device *parent, struct gendisk *disk, d1254a8749711e block/genhd.c Christoph Hellwig 2021-08-04 401 const struct attribute_group **groups) d1254a8749711e block/genhd.c Christoph Hellwig 2021-08-04 402 ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 403 { 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 404 struct device *ddev = disk_to_dev(disk); 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 405 int ret; cf0ca9fe5dd9e3 block/genhd.c Peter Zijlstra 2008-04-30 406 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 407 /* 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 408 * The disk queue should now be all set with enough information about 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 409 * the device for the elevator code to pick an adequate default 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 410 * elevator if one is needed, that is, for devices requesting queue 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 411 * registration. 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 412 */ 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 413 elevator_init_mq(disk->queue); 737eb78e82d52d block/genhd.c Damien Le Moal 2019-09-05 414 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 415 /* 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 416 * If the driver provides an explicit major number it also must provide 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 417 * the number of minors numbers supported, and those will be used to 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 418 * setup the gendisk. 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 419 * Otherwise just allocate the device numbers for both the whole device 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 420 * and all partitions from the extended dev_t space. 3e1a7ff8a0a7b9 block/genhd.c Tejun Heo 2008-08-25 421 */ 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 422 if (disk->major) { 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 423 if (WARN_ON(!disk->minors)) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 424 return -EINVAL; 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 425 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 426 if (disk->minors > DISK_MAX_PARTS) { 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 427 pr_err("block: can't allocate more than %d partitions\n", 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 428 DISK_MAX_PARTS); 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 429 disk->minors = DISK_MAX_PARTS; 2e3c73fa0c419f block/genhd.c Christoph Hellwig 2021-05-21 430 } 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 431 } else { 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 432 if (WARN_ON(disk->minors)) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 433 return -EINVAL; 3e1a7ff8a0a7b9 block/genhd.c Tejun Heo 2008-08-25 434 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 435 ret = blk_alloc_ext_minor(); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 436 if (ret < 0) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 437 return ret; 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 438 disk->major = BLOCK_EXT_MAJOR; 539711d7d6fe38 block/genhd.c Christoph Hellwig 2021-08-24 439 disk->first_minor = ret; 0d1feb72ffd857 block/genhd.c Christoph Hellwig 2021-05-21 440 disk->flags |= GENHD_FL_EXT_DEVT; 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 441 } 7c3f828b522b07 block/genhd.c Christoph Hellwig 2021-05-21 442 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 443 ret = disk_alloc_events(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 444 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 445 goto out_free_ext_minor; 9f53d2fe815b40 block/genhd.c Stanislaw Gruszka 2012-03-02 446 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 447 /* delay uevents, until we scanned partition table */ 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 448 dev_set_uevent_suppress(ddev, 1); 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 449 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 450 ddev->parent = parent; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 451 ddev->groups = groups; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 452 dev_set_name(ddev, "%s", disk->disk_name); 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 453 if (!(disk->flags & GENHD_FL_HIDDEN)) 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 454 ddev->devt = MKDEV(disk->major, disk->first_minor); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 455 ret = device_add(ddev); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 456 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 457 goto out_disk_release_events; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 458 if (!sysfs_deprecated) { 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 459 ret = sysfs_create_link(block_depr, &ddev->kobj, 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 460 kobject_name(&ddev->kobj)); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 461 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 462 goto out_device_del; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 463 } 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 464 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 465 /* 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 466 * avoid probable deadlock caused by allocating memory with 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 467 * GFP_KERNEL in runtime_resume callback of its all ancestor 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 468 * devices 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 469 */ 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 470 pm_runtime_set_memalloc_noio(ddev, true); 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 471 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 472 ret = blk_integrity_add(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 473 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 474 goto out_del_block_link; bab53f6b617d9f block/genhd.c Christoph Hellwig 2021-08-18 475 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 476 disk->part0->bd_holder_dir = 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 477 kobject_create_and_add("holders", &ddev->kobj); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 478 if (!disk->part0->bd_holder_dir) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 479 goto out_del_integrity; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 480 disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 481 if (!disk->slave_dir) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 @482 goto out_put_holder_dir; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 483 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 484 ret = bd_register_pending_holders(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 485 if (ret < 0) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 486 goto out_put_slave_dir; 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 487 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 488 ret = blk_register_queue(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 489 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 490 goto out_put_slave_dir; 75f4dca59694df block/genhd.c Christoph Hellwig 2021-08-18 491 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 492 if (disk->flags & GENHD_FL_HIDDEN) { 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 493 /* 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 494 * Don't let hidden disks show up in /proc/partitions, 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 495 * and don't bother scanning for partitions either. 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 496 */ 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 497 disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO; 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 498 disk->flags |= GENHD_FL_NO_PART_SCAN; 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 499 } else { 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 500 ret = bdi_register(disk->bdi, "%u:%u", 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 501 disk->major, disk->first_minor); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 502 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 503 goto out_unregister_queue; 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 504 bdi_set_owner(disk->bdi, ddev); 9d5ee6767c8576 block/genhd.c Christoph Hellwig 2021-08-18 505 ret = sysfs_create_link(&ddev->kobj, 9d5ee6767c8576 block/genhd.c Christoph Hellwig 2021-08-18 506 &disk->bdi->dev->kobj, "bdi"); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 507 if (ret) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 508 goto out_unregister_bdi; 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 509 9d5ee6767c8576 block/genhd.c Christoph Hellwig 2021-08-18 510 bdev_add(disk->part0, ddev->devt); 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 511 disk_scan_partitions(disk); 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 512 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 513 /* 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 514 * Announce the disk and partitions after all partitions are 8235b5c1e8c1c0 block/genhd.c Christoph Hellwig 2021-08-18 515 * created. (for hidden disks uevents remain suppressed forever) 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 516 */ 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 517 dev_set_uevent_suppress(ddev, 0); 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 518 disk_uevent(disk, KOBJ_ADD); 8ddcd653257c18 block/genhd.c Christoph Hellwig 2017-11-02 519 } 52b85909f85d06 block/genhd.c Christoph Hellwig 2021-08-18 520 75f4dca59694df block/genhd.c Christoph Hellwig 2021-08-18 521 disk_update_readahead(disk); 77ea887e433ad8 block/genhd.c Tejun Heo 2010-12-08 522 disk_add_events(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 523 return 0; 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 524 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 525 out_unregister_bdi: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 526 if (!(disk->flags & GENHD_FL_HIDDEN)) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 527 bdi_unregister(disk->bdi); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 528 out_unregister_queue: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 529 blk_unregister_queue(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 530 out_put_slave_dir: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 531 kobject_put(disk->slave_dir); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 532 out_put_holder_dir: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 533 kobject_put(disk->part0->bd_holder_dir); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 534 out_del_integrity: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 535 blk_integrity_del(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 536 out_del_block_link: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 537 if (!sysfs_deprecated) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 538 sysfs_remove_link(block_depr, dev_name(ddev)); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 539 out_device_del: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 540 device_del(ddev); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 541 out_disk_release_events: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 542 disk_release_events(disk); 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 543 out_free_ext_minor: 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 544 if (disk->major == BLOCK_EXT_MAJOR) 83cbce9574462c block/genhd.c Luis Chamberlain 2021-08-18 545 blk_free_ext_minor(disk->first_minor); 649642134a84c5 block/genhd.c Luis Chamberlain 2021-07-15 546 return ret; ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 547 } e63a46bef01ff3 block/genhd.c Dan Williams 2016-06-15 548 EXPORT_SYMBOL(device_add_disk); ^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 549 :::::: The code at line 482 was first introduced by commit :::::: 83cbce9574462c6b4eed6797bdaf18fae6859ab3 block: add error handling for device_add_disk / add_disk :::::: TO: Luis Chamberlain <[email protected]> :::::: CC: Jens Axboe <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
