summaryrefslogtreecommitdiff
path: root/fs/overlayfs/export.c
diff options
context:
space:
mode:
authorAmir Goldstein <amir73il@gmail.com>2023-10-02 14:21:49 +0300
committerAmir Goldstein <amir73il@gmail.com>2023-10-02 17:45:02 +0300
commita535116d80339dbfe50b9b81b2f808c69eefbbc3 (patch)
treed176b86fe0e19b12774c5564dc787ed2539b81a6 /fs/overlayfs/export.c
parentc54719c92aa3129f330cce81b88cf34f1627f756 (diff)
downloadlinux-a535116d80339dbfe50b9b81b2f808c69eefbbc3.tar.xz
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 'fs/overlayfs/export.c')
0 files changed, 0 insertions, 0 deletions