diff options
author | Jingbo Xu <jefflexu@linux.alibaba.com> | 2024-06-28 14:29:30 +0800 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2024-07-03 10:36:16 +0200 |
commit | cf5bb09e742a9cf6349127e868329a8f69b7a014 (patch) | |
tree | 19a7128ae5574051676e088562c7f446c347cfcb /fs/netfs | |
parent | 19f4f399091478c95947f6bd7ad61622300c30d9 (diff) | |
download | lwn-cf5bb09e742a9cf6349127e868329a8f69b7a014.tar.gz lwn-cf5bb09e742a9cf6349127e868329a8f69b7a014.zip |
cachefiles: add missing lock protection when polling
Add missing lock protection in poll routine when iterating xarray,
otherwise:
Even with RCU read lock held, only the slot of the radix tree is
ensured to be pinned there, while the data structure (e.g. struct
cachefiles_req) stored in the slot has no such guarantee. The poll
routine will iterate the radix tree and dereference cachefiles_req
accordingly. Thus RCU read lock is not adequate in this case and
spinlock is needed here.
Fixes: b817e22b2e91 ("cachefiles: narrow the scope of triggering EPOLLIN events in ondemand mode")
Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Link: https://lore.kernel.org/r/20240628062930.2467993-10-libaokun@huaweicloud.com
Acked-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jia Zhu <zhujia.zj@bytedance.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/netfs')
0 files changed, 0 insertions, 0 deletions