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]

Attachment: .config.gz
Description: application/gzip

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

Reply via email to