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]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to