summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2023-12-19 09:28:33 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-01-25 15:35:30 -0800
commita33c741ca6997da7e3d3e2152c0422e4d8820f08 (patch)
treed2f12b0d743eb109097fa0843d1febaf7ea44b7c /block
parent63c3c44ff4c535157e7574452c9f37d93dafdd20 (diff)
downloadlinux-stable-a33c741ca6997da7e3d3e2152c0422e4d8820f08.tar.gz
linux-stable-a33c741ca6997da7e3d3e2152c0422e4d8820f08.tar.bz2
linux-stable-a33c741ca6997da7e3d3e2152c0422e4d8820f08.zip
blk-cgroup: fix rcu lockdep warning in blkg_lookup()
[ Upstream commit 393cd8ffd832f23eec3a105553eff622e8198918 ] blkg_lookup() is called with either queue_lock or rcu read lock, so use rcu_dereference_check(lockdep_is_held(&q->queue_lock)) for retrieving 'blkg', which way models the check exactly for covering queue lock or rcu read lock. Fix lockdep warning of "block/blk-cgroup.h:254 suspicious rcu_dereference_check() usage!" from blkg_lookup(). Tested-by: Changhui Zhong <czhong@redhat.com> Signed-off-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Yu Kuai <yukuai3@huawei.com> Fixes: 83462a6c971c ("blkcg: Drop unnecessary RCU read [un]locks from blkg_conf_prep/finish()") Acked-by: Tejun Heo <tj@kernel.org> Link: https://lore.kernel.org/r/20231219012833.2129540-1-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'block')
-rw-r--r--block/blk-cgroup.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h
index fd482439afbc..b927a4a0ad03 100644
--- a/block/blk-cgroup.h
+++ b/block/blk-cgroup.h
@@ -252,7 +252,8 @@ static inline struct blkcg_gq *blkg_lookup(struct blkcg *blkcg,
if (blkcg == &blkcg_root)
return q->root_blkg;
- blkg = rcu_dereference(blkcg->blkg_hint);
+ blkg = rcu_dereference_check(blkcg->blkg_hint,
+ lockdep_is_held(&q->queue_lock));
if (blkg && blkg->q == q)
return blkg;