All of lore.kernel.org
 help / color / mirror / Atom feed
* [openeuler:OLK-6.6 1344/16464] block/bdev.c:829 bdev_open_by_dev() warn: possible memory leak of 'handle'
@ 2024-11-07  0:18 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2024-11-07  0:18 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Li Lingfeng <lilingfeng3@huawei.com>

tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8edd62f80cd8e00a4ecb15f57010d8fdbff12e16
commit: 498bc4954a0850611dc7b0193bc5c5a31479aecf [1344/16464] block: Add config option to not allow writing to mounted devices
:::::: branch date: 11 hours ago
:::::: commit date: 11 months ago
config: x86_64-randconfig-161-20241106 (https://download.01.org/0day-ci/archive/20241107/202411070817.MsBLoDva-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202411070817.MsBLoDva-lkp@intel.com/

smatch warnings:
block/bdev.c:829 bdev_open_by_dev() warn: possible memory leak of 'handle'

vim +/handle +829 block/bdev.c

498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  784  
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  785  /**
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  786   * bdev_open_by_dev - open a block device by device number
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  787   * @dev: device number of block device to open
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  788   * @mode: open mode (BLK_OPEN_*)
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  789   * @holder: exclusive holder identifier
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  790   * @hops: holder operations
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  791   *
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  792   * Open the block device described by device number @dev. If @holder is not
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  793   * %NULL, the block device is opened with exclusive access.  Exclusive opens may
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  794   * nest for the same @holder.
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  795   *
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  796   * Use this interface ONLY if you really do not have anything better - i.e. when
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  797   * you are behind a truly sucky interface and all you are given is a device
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  798   * number.  Everything else should use bdev_open_by_path().
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  799   *
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  800   * CONTEXT:
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  801   * Might sleep.
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  802   *
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  803   * RETURNS:
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  804   * Handle with a reference to the block_device on success, ERR_PTR(-errno) on
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  805   * failure.
d4d77629953eab fs/block_dev.c Tejun Heo         2010-11-13  806   */
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  807  struct bdev_handle *bdev_open_by_dev(dev_t dev, blk_mode_t mode, void *holder,
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  808  				     const struct blk_holder_ops *hops)
^1da177e4c3f41 fs/block_dev.c Linus Torvalds    2005-04-16  809  {
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  810  	struct bdev_handle *handle = kmalloc(sizeof(struct bdev_handle),
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  811  					     GFP_KERNEL);
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  812  	struct block_device *bdev;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  813  	bool unblock_events = true;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  814  	struct gendisk *disk;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  815  	int ret;
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  816  
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  817  	if (!handle)
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  818  		return ERR_PTR(-ENOMEM);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  819  
7918f0f6fdafa1 fs/block_dev.c Christoph Hellwig 2020-11-23  820  	ret = devcgroup_check_permission(DEVCG_DEV_BLOCK,
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  821  			MAJOR(dev), MINOR(dev),
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  822  			((mode & BLK_OPEN_READ) ? DEVCG_ACC_READ : 0) |
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  823  			((mode & BLK_OPEN_WRITE) ? DEVCG_ACC_WRITE : 0));
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  824  	if (ret)
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  825  		goto free_handle;
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  826  
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  827  	/* Blocking writes requires exclusive opener */
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  828  	if (mode & BLK_OPEN_RESTRICT_WRITES && !holder)
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08 @829  		return ERR_PTR(-EINVAL);
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  830  
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  831  	bdev = blkdev_get_no_open(dev);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  832  	if (!bdev) {
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  833  		ret = -ENXIO;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  834  		goto free_handle;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  835  	}
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  836  	disk = bdev->bd_disk;
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  837  
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  838  	if (holder) {
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  839  		mode |= BLK_OPEN_EXCL;
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  840  		ret = bd_prepare_to_claim(bdev, holder, hops);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  841  		if (ret)
37c3fc9abb25cd fs/block_dev.c Christoph Hellwig 2020-11-25  842  			goto put_blkdev;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  843  	} else {
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  844  		if (WARN_ON_ONCE(mode & BLK_OPEN_EXCL)) {
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  845  			ret = -EIO;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  846  			goto put_blkdev;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  847  		}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  848  	}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  849  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  850  	disk_block_events(disk);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  851  
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  852  	mutex_lock(&disk->open_mutex);
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  853  	ret = -ENXIO;
50b4aecfbbb098 fs/block_dev.c Christoph Hellwig 2021-08-09  854  	if (!disk_live(disk))
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  855  		goto abort_claiming;
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  856  	if (!try_module_get(disk->fops->owner))
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  857  		goto abort_claiming;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  858  	ret = -EBUSY;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  859  	if (!bdev_may_open(bdev, mode))
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  860  		goto abort_claiming;
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  861  	if (bdev_is_partition(bdev))
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  862  		ret = blkdev_get_part(bdev, mode);
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  863  	else
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  864  		ret = blkdev_get_whole(bdev, mode);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  865  	if (ret)
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  866  		goto put_module;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  867  	bdev_claim_write_access(bdev, mode);
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  868  	if (holder) {
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  869  		bd_finish_claiming(bdev, holder, hops);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  870  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  871  		/*
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  872  		 * Block event polling for write claims if requested.  Any write
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  873  		 * holder makes the write_holder state stick until all are
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  874  		 * released.  This is good enough and tracking individual
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  875  		 * writeable reference is too fragile given the way @mode is
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  876  		 * used in blkdev_get/put().
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  877  		 */
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  878  		if ((mode & BLK_OPEN_WRITE) && !bdev->bd_write_holder &&
1545e0b419ba1d block/bdev.c   Christoph Hellwig 2021-11-22  879  		    (disk->event_flags & DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE)) {
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  880  			bdev->bd_write_holder = true;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  881  			unblock_events = false;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  882  		}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  883  	}
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  884  	mutex_unlock(&disk->open_mutex);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  885  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  886  	if (unblock_events)
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  887  		disk_unblock_events(disk);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  888  	handle->bdev = bdev;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  889  	handle->holder = holder;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  890  	handle->mode = mode;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  891  	return handle;
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  892  put_module:
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  893  	module_put(disk->fops->owner);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  894  abort_claiming:
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  895  	if (holder)
37c3fc9abb25cd fs/block_dev.c Christoph Hellwig 2020-11-25  896  		bd_abort_claiming(bdev, holder);
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  897  	mutex_unlock(&disk->open_mutex);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  898  	disk_unblock_events(disk);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  899  put_blkdev:
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  900  	blkdev_put_no_open(bdev);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  901  free_handle:
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  902  	kfree(handle);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  903  	return ERR_PTR(ret);
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  904  }
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  905  EXPORT_SYMBOL(bdev_open_by_dev);
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  906  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [openeuler:OLK-6.6 1344/16464] block/bdev.c:829 bdev_open_by_dev() warn: possible memory leak of 'handle'
@ 2024-11-07  9:02 Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2024-11-07  9:02 UTC (permalink / raw)
  To: oe-kbuild, kernel, Li Lingfeng; +Cc: lkp, oe-kbuild-all

tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8edd62f80cd8e00a4ecb15f57010d8fdbff12e16
commit: 498bc4954a0850611dc7b0193bc5c5a31479aecf [1344/16464] block: Add config option to not allow writing to mounted devices
config: x86_64-randconfig-161-20241106 (https://download.01.org/0day-ci/archive/20241107/202411070817.MsBLoDva-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202411070817.MsBLoDva-lkp@intel.com/

smatch warnings:
block/bdev.c:829 bdev_open_by_dev() warn: possible memory leak of 'handle'

vim +/handle +829 block/bdev.c

603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  807  struct bdev_handle *bdev_open_by_dev(dev_t dev, blk_mode_t mode, void *holder,
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  808  				     const struct blk_holder_ops *hops)
^1da177e4c3f41 fs/block_dev.c Linus Torvalds    2005-04-16  809  {
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  810  	struct bdev_handle *handle = kmalloc(sizeof(struct bdev_handle),
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  811  					     GFP_KERNEL);
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  812  	struct block_device *bdev;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  813  	bool unblock_events = true;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  814  	struct gendisk *disk;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  815  	int ret;
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  816  
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  817  	if (!handle)
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  818  		return ERR_PTR(-ENOMEM);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  819  
7918f0f6fdafa1 fs/block_dev.c Christoph Hellwig 2020-11-23  820  	ret = devcgroup_check_permission(DEVCG_DEV_BLOCK,
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  821  			MAJOR(dev), MINOR(dev),
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  822  			((mode & BLK_OPEN_READ) ? DEVCG_ACC_READ : 0) |
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  823  			((mode & BLK_OPEN_WRITE) ? DEVCG_ACC_WRITE : 0));
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  824  	if (ret)
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  825  		goto free_handle;
4e7b5671c6a883 fs/block_dev.c Christoph Hellwig 2020-11-23  826  
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  827  	/* Blocking writes requires exclusive opener */
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  828  	if (mode & BLK_OPEN_RESTRICT_WRITES && !holder)
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08 @829  		return ERR_PTR(-EINVAL);

goto free_handle?

498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  830  
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  831  	bdev = blkdev_get_no_open(dev);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  832  	if (!bdev) {
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  833  		ret = -ENXIO;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  834  		goto free_handle;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  835  	}
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  836  	disk = bdev->bd_disk;
e5c7fb400227df fs/block_dev.c Christoph Hellwig 2020-08-31  837  
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  838  	if (holder) {
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  839  		mode |= BLK_OPEN_EXCL;
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  840  		ret = bd_prepare_to_claim(bdev, holder, hops);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  841  		if (ret)
37c3fc9abb25cd fs/block_dev.c Christoph Hellwig 2020-11-25  842  			goto put_blkdev;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  843  	} else {
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  844  		if (WARN_ON_ONCE(mode & BLK_OPEN_EXCL)) {
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  845  			ret = -EIO;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  846  			goto put_blkdev;
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  847  		}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  848  	}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  849  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  850  	disk_block_events(disk);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  851  
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  852  	mutex_lock(&disk->open_mutex);
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  853  	ret = -ENXIO;
50b4aecfbbb098 fs/block_dev.c Christoph Hellwig 2021-08-09  854  	if (!disk_live(disk))
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  855  		goto abort_claiming;
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  856  	if (!try_module_get(disk->fops->owner))
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  857  		goto abort_claiming;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  858  	ret = -EBUSY;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  859  	if (!bdev_may_open(bdev, mode))
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  860  		goto abort_claiming;
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  861  	if (bdev_is_partition(bdev))
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  862  		ret = blkdev_get_part(bdev, mode);
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  863  	else
362529d9280af4 fs/block_dev.c Christoph Hellwig 2021-05-25  864  		ret = blkdev_get_whole(bdev, mode);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  865  	if (ret)
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  866  		goto put_module;
498bc4954a0850 block/bdev.c   Jan Kara          2023-12-08  867  	bdev_claim_write_access(bdev, mode);
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  868  	if (holder) {
0718afd47f70cf block/bdev.c   Christoph Hellwig 2023-06-01  869  		bd_finish_claiming(bdev, holder, hops);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  870  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  871  		/*
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  872  		 * Block event polling for write claims if requested.  Any write
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  873  		 * holder makes the write_holder state stick until all are
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  874  		 * released.  This is good enough and tracking individual
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  875  		 * writeable reference is too fragile given the way @mode is
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  876  		 * used in blkdev_get/put().
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  877  		 */
05bdb9965305bb block/bdev.c   Christoph Hellwig 2023-06-08  878  		if ((mode & BLK_OPEN_WRITE) && !bdev->bd_write_holder &&
1545e0b419ba1d block/bdev.c   Christoph Hellwig 2021-11-22  879  		    (disk->event_flags & DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE)) {
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  880  			bdev->bd_write_holder = true;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  881  			unblock_events = false;
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  882  		}
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  883  	}
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  884  	mutex_unlock(&disk->open_mutex);
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  885  
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  886  	if (unblock_events)
5b56b6ed574b58 fs/block_dev.c Christoph Hellwig 2020-11-23  887  		disk_unblock_events(disk);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  888  	handle->bdev = bdev;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  889  	handle->holder = holder;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  890  	handle->mode = mode;
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  891  	return handle;
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  892  put_module:
efcf5932230b94 block/bdev.c   Ming Lei          2021-11-11  893  	module_put(disk->fops->owner);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  894  abort_claiming:
2736e8eeb0ccdc block/bdev.c   Christoph Hellwig 2023-06-08  895  	if (holder)
37c3fc9abb25cd fs/block_dev.c Christoph Hellwig 2020-11-25  896  		bd_abort_claiming(bdev, holder);
a8698707a1835b fs/block_dev.c Christoph Hellwig 2021-05-25  897  	mutex_unlock(&disk->open_mutex);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  898  	disk_unblock_events(disk);
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  899  put_blkdev:
22ae8ce8b89241 fs/block_dev.c Christoph Hellwig 2020-11-26  900  	blkdev_put_no_open(bdev);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  901  free_handle:
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  902  	kfree(handle);
603106af5aea5b block/bdev.c   Jan Kara          2023-11-30  903  	return ERR_PTR(ret);
bd11bbc24b9009 block/bdev.c   Jan Kara          2023-11-30  904  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-11-07  9:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07  0:18 [openeuler:OLK-6.6 1344/16464] block/bdev.c:829 bdev_open_by_dev() warn: possible memory leak of 'handle' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2024-11-07  9:02 Dan Carpenter

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.