diff options
author | Amir Goldstein <amir73il@gmail.com> | 2023-10-02 14:21:49 +0300 |
---|---|---|
committer | Amir Goldstein <amir73il@gmail.com> | 2023-10-02 17:45:02 +0300 |
commit | a535116d80339dbfe50b9b81b2f808c69eefbbc3 (patch) | |
tree | d176b86fe0e19b12774c5564dc787ed2539b81a6 /drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | |
parent | c54719c92aa3129f330cce81b88cf34f1627f756 (diff) |
ovl: make use of ->layers safe in rcu pathwalk
ovl_permission() accesses ->layers[...].mnt; we can't have ->layers
freed without an RCU delay on fs shutdown.
Fortunately, kern_unmount_array() that is used to drop those mounts
does include an RCU delay, so freeing is delayed; unfortunately, the
array passed to kern_unmount_array() is formed by mangling ->layers
contents and that happens without any delays.
The ->layers[...].name string entries are used to store the strings to
display in "lowerdir=..." by ovl_show_options(). Those entries are not
accessed in RCU walk.
Move the name strings into a separate array ofs->config.lowerdirs and
reuse the ofs->config.lowerdirs array as the temporary mount array to
pass to kern_unmount_array().
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Link: https://lore.kernel.org/r/20231002023711.GP3389589@ZenIV/
Acked-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c')
0 files changed, 0 insertions, 0 deletions