* [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.