lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202110270056.HnCzP5qD-lkp@intel.com>
Date:   Wed, 3 Nov 2021 17:00:04 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     kbuild@...ts.01.org, Luis Chamberlain <mcgrof@...nel.org>
Cc:     lkp@...el.com, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org
Subject: [mcgrof-next:20211011-for-axboe-add-disk-error-handling 24/24]
 block/genhd.c:480 device_add_disk() warn: missing error code 'ret'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git 20211011-for-axboe-add-disk-error-handling
head:   53099761729ca16d3bb36db8a8cc526f4eb08f28
commit: 53099761729ca16d3bb36db8a8cc526f4eb08f28 [24/24] block: add __must_check for *add_disk*() callers
config: i386-randconfig-m021-20211019 (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 <lkp@...el.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>

smatch warnings:
block/genhd.c:480 device_add_disk() warn: missing error code 'ret'

vim +/ret +480 block/genhd.c

53099761729ca1 block/genhd.c         Luis Chamberlain  2021-07-15  398  int __must_check device_add_disk(struct device *parent, struct gendisk *disk,
d1254a8749711e block/genhd.c         Christoph Hellwig 2021-08-04  399  				 const struct attribute_group **groups)
d1254a8749711e block/genhd.c         Christoph Hellwig 2021-08-04  400  
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds    2005-04-16  401  {
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  402  	struct device *ddev = disk_to_dev(disk);
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  403  	int ret;
cf0ca9fe5dd9e3 block/genhd.c         Peter Zijlstra    2008-04-30  404  
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  405  	/*
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  406  	 * The disk queue should now be all set with enough information about
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  407  	 * the device for the elevator code to pick an adequate default
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  408  	 * elevator if one is needed, that is, for devices requesting queue
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  409  	 * registration.
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  410  	 */
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  411  	elevator_init_mq(disk->queue);
737eb78e82d52d block/genhd.c         Damien Le Moal    2019-09-05  412  
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  413  	/*
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  414  	 * If the driver provides an explicit major number it also must provide
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  415  	 * the number of minors numbers supported, and those will be used to
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  416  	 * setup the gendisk.
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  417  	 * Otherwise just allocate the device numbers for both the whole device
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  418  	 * and all partitions from the extended dev_t space.
3e1a7ff8a0a7b9 block/genhd.c         Tejun Heo         2008-08-25  419  	 */
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  420  	if (disk->major) {
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  421  		if (WARN_ON(!disk->minors))
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  422  			return -EINVAL;
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  423  
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  424  		if (disk->minors > DISK_MAX_PARTS) {
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  425  			pr_err("block: can't allocate more than %d partitions\n",
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  426  				DISK_MAX_PARTS);
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  427  			disk->minors = DISK_MAX_PARTS;
2e3c73fa0c419f block/genhd.c         Christoph Hellwig 2021-05-21  428  		}
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  429  	} else {
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  430  		if (WARN_ON(disk->minors))
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  431  			return -EINVAL;
3e1a7ff8a0a7b9 block/genhd.c         Tejun Heo         2008-08-25  432  
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  433  		ret = blk_alloc_ext_minor();
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  434  		if (ret < 0)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  435  			return ret;
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  436  		disk->major = BLOCK_EXT_MAJOR;
539711d7d6fe38 block/genhd.c         Christoph Hellwig 2021-08-24  437  		disk->first_minor = ret;
0d1feb72ffd857 block/genhd.c         Christoph Hellwig 2021-05-21  438  		disk->flags |= GENHD_FL_EXT_DEVT;
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  439  	}
7c3f828b522b07 block/genhd.c         Christoph Hellwig 2021-05-21  440  
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  441  	ret = disk_alloc_events(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  442  	if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  443  		goto out_free_ext_minor;
9f53d2fe815b40 block/genhd.c         Stanislaw Gruszka 2012-03-02  444  
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  445  	/* delay uevents, until we scanned partition table */
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  446  	dev_set_uevent_suppress(ddev, 1);
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  447  
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  448  	ddev->parent = parent;
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  449  	ddev->groups = groups;
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  450  	dev_set_name(ddev, "%s", disk->disk_name);
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  451  	if (!(disk->flags & GENHD_FL_HIDDEN))
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  452  		ddev->devt = MKDEV(disk->major, disk->first_minor);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  453  	ret = device_add(ddev);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  454  	if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  455  		goto out_disk_release_events;
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  456  	if (!sysfs_deprecated) {
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  457  		ret = sysfs_create_link(block_depr, &ddev->kobj,
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  458  					kobject_name(&ddev->kobj));
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  459  		if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  460  			goto out_device_del;
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  	/*
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  464  	 * avoid probable deadlock caused by allocating memory with
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  465  	 * GFP_KERNEL in runtime_resume callback of its all ancestor
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  466  	 * devices
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  467  	 */
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  468  	pm_runtime_set_memalloc_noio(ddev, true);
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  469  
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  470  	ret = blk_integrity_add(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  471  	if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  472  		goto out_del_block_link;
bab53f6b617d9f block/genhd.c         Christoph Hellwig 2021-08-18  473  
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  474  	disk->part0->bd_holder_dir =
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  475  		kobject_create_and_add("holders", &ddev->kobj);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  476  	if (!disk->part0->bd_holder_dir)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  477  		goto out_del_integrity;
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  478  	disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  479  	if (!disk->slave_dir)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18 @480  		goto out_put_holder_dir;
                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
This needs a "ret = -ENOMEM;"

52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  481  
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  482  	ret = bd_register_pending_holders(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  483  	if (ret < 0)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  484  		goto out_put_slave_dir;
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  485  
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  486  	ret = blk_register_queue(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  487  	if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  488  		goto out_put_slave_dir;
75f4dca59694df block/genhd.c         Christoph Hellwig 2021-08-18  489  
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  490  	if (disk->flags & GENHD_FL_HIDDEN) {
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  491  		/*
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  492  		 * Don't let hidden disks show up in /proc/partitions,
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  493  		 * and don't bother scanning for partitions either.
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  494  		 */
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  495  		disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO;
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  496  		disk->flags |= GENHD_FL_NO_PART_SCAN;
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  497  	} else {
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  498  		ret = bdi_register(disk->bdi, "%u:%u",
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  499  				   disk->major, disk->first_minor);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  500  		if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  501  			goto out_unregister_queue;
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  502  		bdi_set_owner(disk->bdi, ddev);
9d5ee6767c8576 block/genhd.c         Christoph Hellwig 2021-08-18  503  		ret = sysfs_create_link(&ddev->kobj,
9d5ee6767c8576 block/genhd.c         Christoph Hellwig 2021-08-18  504  					&disk->bdi->dev->kobj, "bdi");
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  505  		if (ret)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  506  			goto out_unregister_bdi;
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  507  
9d5ee6767c8576 block/genhd.c         Christoph Hellwig 2021-08-18  508  		bdev_add(disk->part0, ddev->devt);
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  509  		disk_scan_partitions(disk);
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  510  
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  511  		/*
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  512  		 * Announce the disk and partitions after all partitions are
8235b5c1e8c1c0 block/genhd.c         Christoph Hellwig 2021-08-18  513  		 * created. (for hidden disks uevents remain suppressed forever)
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  514  		 */
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  515  		dev_set_uevent_suppress(ddev, 0);
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  516  		disk_uevent(disk, KOBJ_ADD);
8ddcd653257c18 block/genhd.c         Christoph Hellwig 2017-11-02  517  	}
52b85909f85d06 block/genhd.c         Christoph Hellwig 2021-08-18  518  
75f4dca59694df block/genhd.c         Christoph Hellwig 2021-08-18  519  	disk_update_readahead(disk);
77ea887e433ad8 block/genhd.c         Tejun Heo         2010-12-08  520  	disk_add_events(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  521  	return 0;
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  522  
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  523  out_unregister_bdi:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  524  	if (!(disk->flags & GENHD_FL_HIDDEN))
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  525  		bdi_unregister(disk->bdi);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  526  out_unregister_queue:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  527  	blk_unregister_queue(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  528  out_put_slave_dir:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  529  	kobject_put(disk->slave_dir);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  530  out_put_holder_dir:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  531  	kobject_put(disk->part0->bd_holder_dir);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  532  out_del_integrity:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  533  	blk_integrity_del(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  534  out_del_block_link:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  535  	if (!sysfs_deprecated)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  536  		sysfs_remove_link(block_depr, dev_name(ddev));
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  537  out_device_del:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  538  	device_del(ddev);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  539  out_disk_release_events:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  540  	disk_release_events(disk);
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  541  out_free_ext_minor:
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  542  	if (disk->major == BLOCK_EXT_MAJOR)
83cbce9574462c block/genhd.c         Luis Chamberlain  2021-08-18  543  		blk_free_ext_minor(disk->first_minor);
53099761729ca1 block/genhd.c         Luis Chamberlain  2021-07-15  544  	return ret;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds    2005-04-16  545  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ