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