* [hch-block:bdev-inode 71/72] block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
@ 2020-11-16 9:29 ` Dan Carpenter
0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2020-11-16 9:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 12153 bytes --]
tree: git://git.infradead.org/users/hch/block.git bdev-inode
head: aa9426788d1aeb32c20dfd1e0181a42a8dd0890d
commit: 884bbcdbaaf8439db16bcf64ec891dcc62d172ea [71/72] block: merge struct block_device and struct hd_struct
config: x86_64-randconfig-m001-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
vim +/ERR_PTR +417 block/partitions/core.c
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 313 static struct block_device *add_partition(struct gendisk *disk, int partno,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 314 sector_t start, sector_t len, int flags,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 315 struct partition_meta_info *info)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 316 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 317 struct block_device *p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 318 dev_t devt = MKDEV(0, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 319 struct device *ddev = disk_to_dev(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 320 struct device *pdev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 321 struct disk_part_tbl *ptbl;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 322 const char *dname;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 323 int err;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 324
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 325 /*
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 326 * Partitions are not supported on zoned block devices that are used as
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 327 * such.
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 328 */
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 329 switch (disk->queue->limits.zoned) {
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 330 case BLK_ZONED_HM:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 331 pr_warn("%s: partitions not supported on host managed zoned block device\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 332 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 333 return ERR_PTR(-ENXIO);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 334 case BLK_ZONED_HA:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 335 pr_info("%s: disabling host aware zoned block device support due to partitions\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 336 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 337 disk->queue->limits.zoned = BLK_ZONED_NONE;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 338 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 339 case BLK_ZONED_NONE:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 340 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 341 }
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 342
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 343 err = disk_expand_part_tbl(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 344 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 345 return ERR_PTR(err);
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 346 ptbl = rcu_dereference_protected(disk->part_tbl, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 347
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 348 if (ptbl->part[partno])
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 349 return ERR_PTR(-EBUSY);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 350
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 351 p = bdev_alloc(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 352 if (!p)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 353 return ERR_PTR(-ENOMEM);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 354
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 355 p->bd_start_sect = start;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 356 bdev_set_nr_sectors(p, len);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 357 p->bd_policy = get_disk_ro(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 358
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 359 if (info) {
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 360 struct partition_meta_info *pinfo;
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 361
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 362 pinfo = kzalloc_node(sizeof(*pinfo), GFP_KERNEL, disk->node_id);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 363 if (!pinfo)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 364 goto out_free_stats;
missing "err = -ENOMEM;"
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 365 memcpy(pinfo, info, sizeof(*info));
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 366 p->bd_meta_info = pinfo;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 367 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 368
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 369 pdev = part_to_dev(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 370 dname = dev_name(ddev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 371 if (isdigit(dname[strlen(dname) - 1]))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 372 dev_set_name(pdev, "%sp%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 373 else
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 374 dev_set_name(pdev, "%s%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 375
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 376 device_initialize(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 377 pdev->class = &block_class;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 378 pdev->type = &part_type;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 379 pdev->parent = ddev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 380
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 381 err = blk_alloc_devt(p, &devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 382 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 383 goto out_free_info;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 384 pdev->devt = devt;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 385
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 386 /* delay uevent until 'holders' subdir is created */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 387 dev_set_uevent_suppress(pdev, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 388 err = device_add(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 389 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 390 goto out_put;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 391
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 392 err = -ENOMEM;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 393 p->bd_holder_dir = kobject_create_and_add("holders", &pdev->kobj);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 394 if (!p->bd_holder_dir)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 395 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 396
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 397 dev_set_uevent_suppress(pdev, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 398 if (flags & ADDPART_FLAG_WHOLEDISK) {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 399 err = device_create_file(pdev, &dev_attr_whole_disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 400 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 401 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 402 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 403
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 404 /* everything is up and running, commence */
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 405 bdev_add(p, devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 406 rcu_assign_pointer(ptbl->part[partno], p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 407
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 408 /* suppress uevent if the disk suppresses it */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 409 if (!dev_get_uevent_suppress(ddev))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 410 kobject_uevent(&pdev->kobj, KOBJ_ADD);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 411 return p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 412
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 413 out_free_info:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 414 kfree(p->bd_meta_info);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 415 out_free_stats:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 416 bdput(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 @417 return ERR_PTR(err);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 418
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 419 out_del:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 420 kobject_put(p->bd_holder_dir);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 421 device_del(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 422 out_put:
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 423 put_device(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 424 return ERR_PTR(err);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 425 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31307 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* [hch-block:bdev-inode 71/72] block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
@ 2020-11-16 9:29 ` Dan Carpenter
0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2020-11-16 9:29 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 12153 bytes --]
tree: git://git.infradead.org/users/hch/block.git bdev-inode
head: aa9426788d1aeb32c20dfd1e0181a42a8dd0890d
commit: 884bbcdbaaf8439db16bcf64ec891dcc62d172ea [71/72] block: merge struct block_device and struct hd_struct
config: x86_64-randconfig-m001-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
vim +/ERR_PTR +417 block/partitions/core.c
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 313 static struct block_device *add_partition(struct gendisk *disk, int partno,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 314 sector_t start, sector_t len, int flags,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 315 struct partition_meta_info *info)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 316 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 317 struct block_device *p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 318 dev_t devt = MKDEV(0, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 319 struct device *ddev = disk_to_dev(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 320 struct device *pdev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 321 struct disk_part_tbl *ptbl;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 322 const char *dname;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 323 int err;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 324
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 325 /*
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 326 * Partitions are not supported on zoned block devices that are used as
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 327 * such.
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 328 */
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 329 switch (disk->queue->limits.zoned) {
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 330 case BLK_ZONED_HM:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 331 pr_warn("%s: partitions not supported on host managed zoned block device\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 332 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 333 return ERR_PTR(-ENXIO);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 334 case BLK_ZONED_HA:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 335 pr_info("%s: disabling host aware zoned block device support due to partitions\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 336 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 337 disk->queue->limits.zoned = BLK_ZONED_NONE;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 338 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 339 case BLK_ZONED_NONE:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 340 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 341 }
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 342
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 343 err = disk_expand_part_tbl(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 344 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 345 return ERR_PTR(err);
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 346 ptbl = rcu_dereference_protected(disk->part_tbl, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 347
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 348 if (ptbl->part[partno])
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 349 return ERR_PTR(-EBUSY);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 350
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 351 p = bdev_alloc(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 352 if (!p)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 353 return ERR_PTR(-ENOMEM);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 354
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 355 p->bd_start_sect = start;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 356 bdev_set_nr_sectors(p, len);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 357 p->bd_policy = get_disk_ro(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 358
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 359 if (info) {
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 360 struct partition_meta_info *pinfo;
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 361
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 362 pinfo = kzalloc_node(sizeof(*pinfo), GFP_KERNEL, disk->node_id);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 363 if (!pinfo)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 364 goto out_free_stats;
missing "err = -ENOMEM;"
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 365 memcpy(pinfo, info, sizeof(*info));
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 366 p->bd_meta_info = pinfo;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 367 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 368
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 369 pdev = part_to_dev(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 370 dname = dev_name(ddev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 371 if (isdigit(dname[strlen(dname) - 1]))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 372 dev_set_name(pdev, "%sp%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 373 else
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 374 dev_set_name(pdev, "%s%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 375
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 376 device_initialize(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 377 pdev->class = &block_class;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 378 pdev->type = &part_type;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 379 pdev->parent = ddev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 380
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 381 err = blk_alloc_devt(p, &devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 382 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 383 goto out_free_info;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 384 pdev->devt = devt;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 385
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 386 /* delay uevent until 'holders' subdir is created */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 387 dev_set_uevent_suppress(pdev, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 388 err = device_add(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 389 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 390 goto out_put;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 391
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 392 err = -ENOMEM;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 393 p->bd_holder_dir = kobject_create_and_add("holders", &pdev->kobj);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 394 if (!p->bd_holder_dir)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 395 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 396
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 397 dev_set_uevent_suppress(pdev, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 398 if (flags & ADDPART_FLAG_WHOLEDISK) {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 399 err = device_create_file(pdev, &dev_attr_whole_disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 400 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 401 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 402 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 403
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 404 /* everything is up and running, commence */
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 405 bdev_add(p, devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 406 rcu_assign_pointer(ptbl->part[partno], p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 407
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 408 /* suppress uevent if the disk suppresses it */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 409 if (!dev_get_uevent_suppress(ddev))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 410 kobject_uevent(&pdev->kobj, KOBJ_ADD);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 411 return p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 412
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 413 out_free_info:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 414 kfree(p->bd_meta_info);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 415 out_free_stats:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 416 bdput(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 @417 return ERR_PTR(err);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 418
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 419 out_del:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 420 kobject_put(p->bd_holder_dir);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 421 device_del(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 422 out_put:
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 423 put_device(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 424 return ERR_PTR(err);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 425 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31307 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [hch-block:bdev-inode 71/72] block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
2020-11-16 9:29 ` Dan Carpenter
(?)
@ 2020-11-16 10:00 ` Christoph Hellwig
-1 siblings, 0 replies; 4+ messages in thread
From: Christoph Hellwig @ 2020-11-16 10:00 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 14 bytes --]
Thanks, fixed.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [hch-block:bdev-inode 71/72] block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
@ 2020-11-15 0:23 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2020-11-15 0:23 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 31433 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Christoph Hellwig <hch@lst.de>
tree: git://git.infradead.org/users/hch/block.git bdev-inode
head: aa9426788d1aeb32c20dfd1e0181a42a8dd0890d
commit: 884bbcdbaaf8439db16bcf64ec891dcc62d172ea [71/72] block: merge struct block_device and struct hd_struct
:::::: branch date: 5 hours ago
:::::: commit date: 5 hours ago
config: x86_64-randconfig-m001-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR'
block/partitions/core.c:602 blk_add_partition() error: 'part' dereferencing possible ERR_PTR()
Old smatch warnings:
block/partitions/core.c:179 check_partition() warn: passing zero to 'ERR_PTR'
vim +/ERR_PTR +417 block/partitions/core.c
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 308
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 309 /*
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 310 * Must be called either with disk->mutex held, before a disk can be opened or
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 311 * after all disk users are gone.
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 312 */
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 313 static struct block_device *add_partition(struct gendisk *disk, int partno,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 314 sector_t start, sector_t len, int flags,
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 315 struct partition_meta_info *info)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 316 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 317 struct block_device *p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 318 dev_t devt = MKDEV(0, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 319 struct device *ddev = disk_to_dev(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 320 struct device *pdev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 321 struct disk_part_tbl *ptbl;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 322 const char *dname;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 323 int err;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 324
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 325 /*
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 326 * Partitions are not supported on zoned block devices that are used as
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 327 * such.
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 328 */
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 329 switch (disk->queue->limits.zoned) {
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 330 case BLK_ZONED_HM:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 331 pr_warn("%s: partitions not supported on host managed zoned block device\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 332 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 333 return ERR_PTR(-ENXIO);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 334 case BLK_ZONED_HA:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 335 pr_info("%s: disabling host aware zoned block device support due to partitions\n",
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 336 disk->disk_name);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 337 disk->queue->limits.zoned = BLK_ZONED_NONE;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 338 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 339 case BLK_ZONED_NONE:
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 340 break;
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 341 }
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 342
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 343 err = disk_expand_part_tbl(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 344 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 345 return ERR_PTR(err);
6d2cf6f2b446c4 block/partition-generic.c Bart Van Assche 2017-08-17 346 ptbl = rcu_dereference_protected(disk->part_tbl, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 347
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 348 if (ptbl->part[partno])
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 349 return ERR_PTR(-EBUSY);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 350
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 351 p = bdev_alloc(disk, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 352 if (!p)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 353 return ERR_PTR(-ENOMEM);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 354
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 355 p->bd_start_sect = start;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 356 bdev_set_nr_sectors(p, len);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 357 p->bd_policy = get_disk_ro(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 358
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 359 if (info) {
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 360 struct partition_meta_info *pinfo;
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 361
f17c21c1ecb80e block/partition-generic.c Christoph Hellwig 2020-03-24 362 pinfo = kzalloc_node(sizeof(*pinfo), GFP_KERNEL, disk->node_id);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 363 if (!pinfo)
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 364 goto out_free_stats;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 365 memcpy(pinfo, info, sizeof(*info));
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 366 p->bd_meta_info = pinfo;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 367 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 368
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 369 pdev = part_to_dev(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 370 dname = dev_name(ddev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 371 if (isdigit(dname[strlen(dname) - 1]))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 372 dev_set_name(pdev, "%sp%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 373 else
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 374 dev_set_name(pdev, "%s%d", dname, partno);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 375
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 376 device_initialize(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 377 pdev->class = &block_class;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 378 pdev->type = &part_type;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 379 pdev->parent = ddev;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 380
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 381 err = blk_alloc_devt(p, &devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 382 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 383 goto out_free_info;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 384 pdev->devt = devt;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 385
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 386 /* delay uevent until 'holders' subdir is created */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 387 dev_set_uevent_suppress(pdev, 1);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 388 err = device_add(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 389 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 390 goto out_put;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 391
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 392 err = -ENOMEM;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 393 p->bd_holder_dir = kobject_create_and_add("holders", &pdev->kobj);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 394 if (!p->bd_holder_dir)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 395 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 396
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 397 dev_set_uevent_suppress(pdev, 0);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 398 if (flags & ADDPART_FLAG_WHOLEDISK) {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 399 err = device_create_file(pdev, &dev_attr_whole_disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 400 if (err)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 401 goto out_del;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 402 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 403
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 404 /* everything is up and running, commence */
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 405 bdev_add(p, devt);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 406 rcu_assign_pointer(ptbl->part[partno], p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 407
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 408 /* suppress uevent if the disk suppresses it */
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 409 if (!dev_get_uevent_suppress(ddev))
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 410 kobject_uevent(&pdev->kobj, KOBJ_ADD);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 411 return p;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 412
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 413 out_free_info:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 414 kfree(p->bd_meta_info);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 415 out_free_stats:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 416 bdput(p);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 @417 return ERR_PTR(err);
010459fd9ad527 block/partitions/core.c Christoph Hellwig 2020-08-31 418
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 419 out_del:
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 420 kobject_put(p->bd_holder_dir);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 421 device_del(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 422 out_put:
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 423 put_device(pdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 424 return ERR_PTR(err);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 425 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 426
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 427 static bool partition_overlaps(struct gendisk *disk, sector_t start,
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 428 sector_t length, int skip_partno)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 429 {
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 430 struct disk_part_iter piter;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 431 struct block_device *part;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 432 bool overlap = false;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 433
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 434 disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 435 while ((part = disk_part_iter_next(&piter))) {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 436 if (part->bd_partno == skip_partno ||
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 437 start >= part->bd_start_sect + bdev_nr_sectors(part) ||
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 438 start + length <= part->bd_start_sect)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 439 continue;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 440 overlap = true;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 441 break;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 442 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 443
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 444 disk_part_iter_exit(&piter);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 445 return overlap;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 446 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 447
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 448 int bdev_add_partition(struct block_device *bdev, int partno,
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 449 sector_t start, sector_t length)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 450 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 451 struct block_device *part;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 452
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 453 mutex_lock(&bdev->bd_disk->mutex);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 454 if (partition_overlaps(bdev->bd_disk, start, length, -1)) {
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 455 mutex_unlock(&bdev->bd_disk->mutex);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 456 return -EBUSY;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 457 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 458
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 459 part = add_partition(bdev->bd_disk, partno, start, length,
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 460 ADDPART_FLAG_NONE, NULL);
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 461 mutex_unlock(&bdev->bd_disk->mutex);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 462 return PTR_ERR_OR_ZERO(part);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 463 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 464
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 465 int bdev_del_partition(struct block_device *bdev, int partno)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 466 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 467 struct block_device *part = NULL;
08fc1ab6d748ab block/partitions/core.c Christoph Hellwig 2020-09-01 468 int ret;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 469
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 470 part = bdget_disk(bdev->bd_disk, partno);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 471 if (!part)
88ce2a530cc986 block/partitions/core.c Christoph Hellwig 2020-09-08 472 return -ENXIO;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 473
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 474 mutex_lock(&bdev->bd_disk->mutex);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 475 ret = -EBUSY;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 476 if (part->bd_openers)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 477 goto out_unlock;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 478
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 479 sync_blockdev(part);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 480 invalidate_bdev(part);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 481
8328eb28369a7d block/partitions/core.c Christoph Hellwig 2020-08-31 482 delete_partition(part);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 483 ret = 0;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 484 out_unlock:
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 485 mutex_unlock(&bdev->bd_disk->mutex);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 486 bdput(part);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 487 return ret;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 488 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 489
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 490 int bdev_resize_partition(struct block_device *bdev, int partno,
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 491 sector_t start, sector_t length)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 492 {
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 493 struct block_device *part = NULL;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 494 int ret = 0;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 495
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 496 part = bdget_disk(bdev->bd_disk, partno);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 497 if (!part)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 498 return -ENXIO;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 499
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 500 mutex_lock(&bdev->bd_disk->mutex);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 501 ret = -EINVAL;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 502 if (start != part->bd_start_sect)
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 503 goto out_unlock;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 504
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 505 ret = -EBUSY;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 506 if (partition_overlaps(bdev->bd_disk, start, length, partno))
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 507 goto out_unlock;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 508
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 509 bdev_set_nr_sectors(part, length);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 510
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 511 ret = 0;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 512 out_unlock:
0e00b86c67ced3 block/partitions/core.c Christoph Hellwig 2020-11-14 513 mutex_unlock(&bdev->bd_disk->mutex);
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 514 bdput(part);
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 515 return ret;
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 516 }
fa9156ae597c24 block/partitions/core.c Christoph Hellwig 2020-04-14 517
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 518 static bool disk_unlock_native_capacity(struct gendisk *disk)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 519 {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 520 const struct block_device_operations *bdops = disk->fops;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 521
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 522 if (bdops->unlock_native_capacity &&
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 523 !(disk->flags & GENHD_FL_NATIVE_CAPACITY)) {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 524 printk(KERN_CONT "enabling native capacity\n");
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 525 bdops->unlock_native_capacity(disk);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 526 disk->flags |= GENHD_FL_NATIVE_CAPACITY;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 527 return true;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 528 } else {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 529 printk(KERN_CONT "truncated\n");
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 530 return false;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 531 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 532 }
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 533
d46430bf5a2298 block/partitions/core.c Christoph Hellwig 2020-04-14 534 int blk_drop_partitions(struct block_device *bdev)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 535 {
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 536 struct disk_part_iter piter;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 537 struct block_device *part;
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 538
10c70d95c0f2f9 block/partitions/core.c Christoph Hellwig 2020-04-28 539 if (bdev->bd_part_count)
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 540 return -EBUSY;
e669c1da03a9dd block/partitions/core.c Christoph Hellwig 2020-04-14 541
e669c1da03a9dd block/partitions/core.c Christoph Hellwig 2020-04-14 542 sync_blockdev(bdev);
e669c1da03a9dd block/partitions/core.c Christoph Hellwig 2020-04-14 543 invalidate_bdev(bdev);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 544
d46430bf5a2298 block/partitions/core.c Christoph Hellwig 2020-04-14 545 disk_part_iter_init(&piter, bdev->bd_disk, DISK_PITER_INCL_EMPTY);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 546 while ((part = disk_part_iter_next(&piter)))
8328eb28369a7d block/partitions/core.c Christoph Hellwig 2020-08-31 547 delete_partition(part);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 548 disk_part_iter_exit(&piter);
94ea4158f1733e block/partition-generic.c Al Viro 2011-09-16 549
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 550 return 0;
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 551 }
21be6cdc00954b block/partitions/core.c Christoph Hellwig 2020-04-14 552 #ifdef CONFIG_S390
21be6cdc00954b block/partitions/core.c Christoph Hellwig 2020-04-14 553 /* for historic reasons in the DASD driver */
21be6cdc00954b block/partitions/core.c Christoph Hellwig 2020-04-14 554 EXPORT_SYMBOL_GPL(blk_drop_partitions);
21be6cdc00954b block/partitions/core.c Christoph Hellwig 2020-04-14 555 #endif
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 556
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 557 static bool blk_add_partition(struct gendisk *disk, struct block_device *bdev,
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 558 struct parsed_partitions *state, int p)
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 559 {
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 560 sector_t size = state->parts[p].size;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 561 sector_t from = state->parts[p].from;
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 562 struct block_device *part;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 563
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 564 if (!size)
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 565 return true;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 566
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 567 if (from >= get_capacity(disk)) {
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 568 printk(KERN_WARNING
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 569 "%s: p%d start %llu is beyond EOD, ",
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 570 disk->disk_name, p, (unsigned long long) from);
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 571 if (disk_unlock_native_capacity(disk))
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 572 return false;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 573 return true;
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 574 }
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 575
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 576 if (from + size > get_capacity(disk)) {
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 577 printk(KERN_WARNING
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 578 "%s: p%d size %llu extends beyond EOD, ",
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 579 disk->disk_name, p, (unsigned long long) size);
fe316bf2d5847b block/partition-generic.c Jun'ichi Nomura 2012-03-02 580
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 581 if (disk_unlock_native_capacity(disk))
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 582 return false;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 583
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 584 /*
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 585 * We can not ignore partitions of broken tables created by for
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 586 * example camera firmware, but we limit them to the end of the
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 587 * disk to avoid creating invalid block devices.
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 588 */
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 589 size = get_capacity(disk) - from;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 590 }
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 591
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 592 part = add_partition(disk, p, from, size, state->parts[p].flags,
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 593 &state->parts[p].info);
b72053072c0bbe block/partition-generic.c Christoph Hellwig 2020-01-26 594 if (IS_ERR(part) && PTR_ERR(part) != -ENXIO) {
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 595 printk(KERN_ERR " %s: p%d could not be added: %ld\n",
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 596 disk->disk_name, p, -PTR_ERR(part));
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 597 return true;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 598 }
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 599
74cc979c3c7f83 block/partition-generic.c Christoph Hellwig 2020-03-24 600 if (IS_BUILTIN(CONFIG_BLK_DEV_MD) &&
74cc979c3c7f83 block/partition-generic.c Christoph Hellwig 2020-03-24 601 (state->parts[p].flags & ADDPART_FLAG_RAID))
884bbcdbaaf843 block/partitions/core.c Christoph Hellwig 2020-11-14 @602 md_autodetect_dev(part->bd_dev);
74cc979c3c7f83 block/partition-generic.c Christoph Hellwig 2020-03-24 603
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 604 return true;
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 605 }
f902b02600028d block/partition-generic.c Christoph Hellwig 2019-11-14 606
:::::: The code at line 417 was first introduced by commit
:::::: 94ea4158f1733e3b10cef067d535f504866e0c41 separate partition format handling from generic code
:::::: TO: Al Viro <viro@zeniv.linux.org.uk>
:::::: CC: Al Viro <viro@zeniv.linux.org.uk>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31307 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-11-16 10:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-16 9:29 [hch-block:bdev-inode 71/72] block/partitions/core.c:417 add_partition() warn: passing zero to 'ERR_PTR' Dan Carpenter
2020-11-16 9:29 ` Dan Carpenter
2020-11-16 10:00 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2020-11-15 0:23 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.