CC: [email protected] CC: [email protected] TO: Luis Chamberlain <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git 20210818-add-disk-error-handling-v2 head: 0517c8bf82eb7da58caada94869afb0957f57c81 commit: 690074f670988d6f0b71291c8e9b26c4d0bbcb46 [146/160] mtd/ubi/block: add error handling support for add_disk() :::::: branch date: 26 hours ago :::::: commit date: 26 hours ago config: x86_64-randconfig-m001-20210818 (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: drivers/mtd/ubi/block.c:468 ubiblock_create() warn: '&dev->list' not removed from list vim +468 drivers/mtd/ubi/block.c e46131b9fd3115 Richard Weinberger 2019-09-01 365 4d283ee2517303 Artem Bityutskiy 2014-03-04 366 int ubiblock_create(struct ubi_volume_info *vi) 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 367 { 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 368 struct ubiblock *dev; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 369 struct gendisk *gd; e46131b9fd3115 Richard Weinberger 2019-09-01 370 u64 disk_capacity; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 371 int ret; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 372 e46131b9fd3115 Richard Weinberger 2019-09-01 373 ret = calc_disk_capacity(vi, &disk_capacity); e46131b9fd3115 Richard Weinberger 2019-09-01 374 if (ret) { e46131b9fd3115 Richard Weinberger 2019-09-01 375 return ret; e46131b9fd3115 Richard Weinberger 2019-09-01 376 } e46131b9fd3115 Richard Weinberger 2019-09-01 377 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 378 /* Check that the volume isn't already handled */ 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 379 mutex_lock(&devices_mutex); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 380 if (find_dev_nolock(vi->ubi_num, vi->vol_id)) { 7f29ae9f977bcd Bradley Bolen 2018-01-18 381 ret = -EEXIST; 7f29ae9f977bcd Bradley Bolen 2018-01-18 382 goto out_unlock; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 383 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 384 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 385 dev = kzalloc(sizeof(struct ubiblock), GFP_KERNEL); 7f29ae9f977bcd Bradley Bolen 2018-01-18 386 if (!dev) { 7f29ae9f977bcd Bradley Bolen 2018-01-18 387 ret = -ENOMEM; 7f29ae9f977bcd Bradley Bolen 2018-01-18 388 goto out_unlock; 7f29ae9f977bcd Bradley Bolen 2018-01-18 389 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 390 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 391 mutex_init(&dev->dev_mutex); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 392 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 393 dev->ubi_num = vi->ubi_num; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 394 dev->vol_id = vi->vol_id; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 395 dev->leb_size = vi->usable_leb_size; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 396 77567b25ab9f06 Christoph Hellwig 2021-06-02 397 dev->tag_set.ops = &ubiblock_mq_ops; 77567b25ab9f06 Christoph Hellwig 2021-06-02 398 dev->tag_set.queue_depth = 64; 77567b25ab9f06 Christoph Hellwig 2021-06-02 399 dev->tag_set.numa_node = NUMA_NO_NODE; 77567b25ab9f06 Christoph Hellwig 2021-06-02 400 dev->tag_set.flags = BLK_MQ_F_SHOULD_MERGE; 77567b25ab9f06 Christoph Hellwig 2021-06-02 401 dev->tag_set.cmd_size = sizeof(struct ubiblock_pdu); 77567b25ab9f06 Christoph Hellwig 2021-06-02 402 dev->tag_set.driver_data = dev; 77567b25ab9f06 Christoph Hellwig 2021-06-02 403 dev->tag_set.nr_hw_queues = 1; 77567b25ab9f06 Christoph Hellwig 2021-06-02 404 77567b25ab9f06 Christoph Hellwig 2021-06-02 405 ret = blk_mq_alloc_tag_set(&dev->tag_set); 77567b25ab9f06 Christoph Hellwig 2021-06-02 406 if (ret) { 77567b25ab9f06 Christoph Hellwig 2021-06-02 407 dev_err(disk_to_dev(dev->gd), "blk_mq_alloc_tag_set failed"); 77567b25ab9f06 Christoph Hellwig 2021-06-02 408 goto out_free_dev;; 77567b25ab9f06 Christoph Hellwig 2021-06-02 409 } 77567b25ab9f06 Christoph Hellwig 2021-06-02 410 77567b25ab9f06 Christoph Hellwig 2021-06-02 411 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 412 /* Initialize the gendisk of this ubiblock device */ 77567b25ab9f06 Christoph Hellwig 2021-06-02 413 gd = blk_mq_alloc_disk(&dev->tag_set, dev); 77567b25ab9f06 Christoph Hellwig 2021-06-02 414 if (IS_ERR(gd)) { 77567b25ab9f06 Christoph Hellwig 2021-06-02 415 ret = PTR_ERR(gd); 77567b25ab9f06 Christoph Hellwig 2021-06-02 416 goto out_free_tags; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 417 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 418 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 419 gd->fops = &ubiblock_ops; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 420 gd->major = ubiblock_major; 77567b25ab9f06 Christoph Hellwig 2021-06-02 421 gd->minors = 1; 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 422 gd->first_minor = idr_alloc(&ubiblock_minor_idr, dev, 0, 0, GFP_KERNEL); 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 423 if (gd->first_minor < 0) { 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 424 dev_err(disk_to_dev(gd), 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 425 "block: dynamic minor allocation failed"); 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 426 ret = -ENODEV; 77567b25ab9f06 Christoph Hellwig 2021-06-02 427 goto out_cleanup_disk; 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 428 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 429 gd->private_data = dev; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 430 sprintf(gd->disk_name, "ubiblock%d_%d", dev->ubi_num, dev->vol_id); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 431 set_capacity(gd, disk_capacity); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 432 dev->gd = gd; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 433 77567b25ab9f06 Christoph Hellwig 2021-06-02 434 dev->rq = gd->queue; ff1f48ee3bb3af Richard Weinberger 2015-01-10 435 blk_queue_max_segments(dev->rq, UBI_MAX_SG_COUNT); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 436 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 437 /* 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 438 * Create one workqueue per volume (per registered block device). 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 439 * Rembember workqueues are cheap, they're not threads. 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 440 */ bebfef150e0b8f Kees Cook 2014-04-07 441 dev->wq = alloc_workqueue("%s", 0, 0, gd->disk_name); 151d6b21f973c5 Helmut Schaa 2014-05-20 442 if (!dev->wq) { 151d6b21f973c5 Helmut Schaa 2014-05-20 443 ret = -ENOMEM; 77567b25ab9f06 Christoph Hellwig 2021-06-02 444 goto out_remove_minor; 151d6b21f973c5 Helmut Schaa 2014-05-20 445 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 446 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 447 list_add_tail(&dev->list, &ubiblock_devices); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 448 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 449 /* Must be the last step: anyone can call file ops from now on */ 690074f670988d Luis Chamberlain 2021-07-14 450 ret = add_disk(dev->gd); 690074f670988d Luis Chamberlain 2021-07-14 451 if (ret) 690074f670988d Luis Chamberlain 2021-07-14 452 goto out_destroy_wq; 690074f670988d Luis Chamberlain 2021-07-14 453 326087033108e7 Tanya Brokhman 2014-10-20 454 dev_info(disk_to_dev(dev->gd), "created from ubi%d:%d(%s)", 326087033108e7 Tanya Brokhman 2014-10-20 455 dev->ubi_num, dev->vol_id, vi->name); 7f29ae9f977bcd Bradley Bolen 2018-01-18 456 mutex_unlock(&devices_mutex); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 457 return 0; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 458 690074f670988d Luis Chamberlain 2021-07-14 459 out_destroy_wq: 690074f670988d Luis Chamberlain 2021-07-14 460 destroy_workqueue(dev->wq); 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 461 out_remove_minor: 2bf50d42f3a418 Dan Ehrenberg 2015-03-17 462 idr_remove(&ubiblock_minor_idr, gd->first_minor); 77567b25ab9f06 Christoph Hellwig 2021-06-02 463 out_cleanup_disk: 77567b25ab9f06 Christoph Hellwig 2021-06-02 464 blk_cleanup_disk(dev->gd); 77567b25ab9f06 Christoph Hellwig 2021-06-02 465 out_free_tags: 77567b25ab9f06 Christoph Hellwig 2021-06-02 466 blk_mq_free_tag_set(&dev->tag_set); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 467 out_free_dev: 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 @468 kfree(dev); 7f29ae9f977bcd Bradley Bolen 2018-01-18 469 out_unlock: 7f29ae9f977bcd Bradley Bolen 2018-01-18 470 mutex_unlock(&devices_mutex); 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 471 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 472 return ret; 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 473 } 9d54c8a33eec78 Ezequiel Garcia 2014-02-25 474 :::::: The code at line 468 was first introduced by commit :::::: 9d54c8a33eec78289b1b3f6e10874719c27ce0a7 UBI: R/O block driver on top of UBI volumes :::::: TO: Ezequiel Garcia <[email protected]> :::::: CC: Artem Bityutskiy <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
