linux/fs/afs
David Howells a64e4d48a0
afs: Fix afs_dynroot_readdir() to not use the RCU read lock
afs_dynroot_readdir() uses the RCU read lock to walk the cell list whilst
emitting cell automount entries - but dir_emit() may write to a userspace
buffer, thereby causing a fault to occur and waits to happen.

Fix afs_dynroot_readdir() to get a shared lock on net->cells_lock instead.

This can be triggered by enabling lockdep, preconfiguring a number of
cells, doing "mount -t afs none /afs -o dyn" (or using the kafs-client
package with afs.mount systemd unit enabled) and then doing "ls /afs".

Fixes: 1d0b929fc0 ("afs: Change dynroot to create contents on demand")
Reported-by: syzbot+3b6c5c6a1d0119b687a1@syzkaller.appspotmail.com
Reported-by: syzbot+8245611446194a52150d@syzkaller.appspotmail.com
Reported-by: syzbot+1aa62e6852a6ad1c7944@syzkaller.appspotmail.com
Reported-by: syzbot+54e6c2176ba76c56217e@syzkaller.appspotmail.com
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/1638014.1744145189@warthog.procyon.org.uk
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
2025-04-11 15:24:29 +02:00
..
Kconfig
Makefile afs: Use the contained hashtable to search a directory 2024-12-20 22:34:09 +01:00
addr_list.c afs: Use the per-peer app data provided by rxrpc 2025-03-10 09:47:15 +00:00
addr_prefs.c afs: Fix merge preference rule failure condition 2025-01-09 17:21:41 +01:00
afs.h afs: Fix the maximum cell name length 2025-01-07 15:55:25 +01:00
afs_cm.h
afs_fs.h
afs_vl.h afs: Fix the maximum cell name length 2025-01-07 15:55:25 +01:00
callback.c afs: Add more tracepoints to do with tracking validity 2024-12-20 22:34:06 +01:00
cell.c afs: Simplify cell record handling 2025-03-10 09:47:15 +00:00
cmservice.c afs: Use the per-peer app data provided by rxrpc 2025-03-10 09:47:15 +00:00
dir.c vfs-6.15-rc1.afs 2025-03-24 13:15:16 -07:00
dir_edit.c afs: Use the contained hashtable to search a directory 2024-12-20 22:34:09 +01:00
dir_search.c afs: Use the contained hashtable to search a directory 2024-12-20 22:34:09 +01:00
dir_silly.c afs: Simplify error handling 2023-12-24 15:22:53 +00:00
dynroot.c afs: Fix afs_dynroot_readdir() to not use the RCU read lock 2025-04-11 15:24:29 +02:00
file.c afs: Add a tracepoint for afs_read_receive() 2024-12-20 22:34:09 +01:00
flock.c afs: adapt to breakup of struct file_lock 2024-02-05 13:11:42 +01:00
fs_operation.c afs: Make {Y,}FS.FetchData an asynchronous operation 2024-12-20 22:34:08 +01:00
fs_probe.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
fsclient.c afs: Fix afs_server ref accounting 2025-03-10 09:47:15 +00:00
inode.c afs: Locally initialise the contents of a new symlink on creation 2024-12-20 22:34:09 +01:00
internal.h afs: Simplify cell record handling 2025-03-10 09:47:15 +00:00
main.c afs: Simplify cell record handling 2025-03-10 09:47:15 +00:00
misc.c afs: Simplify error handling 2023-12-24 15:22:53 +00:00
mntpt.c afs: Drop the net parameter from afs_unuse_cell() 2025-03-10 09:47:15 +00:00
proc.c afs: Use the per-peer app data provided by rxrpc 2025-03-10 09:47:15 +00:00
protocol_afs.h
protocol_uae.h
protocol_yfs.h
rotate.c afs: Add more tracepoints to do with tracking validity 2024-12-20 22:34:06 +01:00
rxrpc.c afs: Use the per-peer app data provided by rxrpc 2025-03-10 09:47:15 +00:00
security.c
server.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
server_list.c afs: Fix afs_server ref accounting 2025-03-10 09:47:15 +00:00
super.c afs: Drop the net parameter from afs_unuse_cell() 2025-03-10 09:47:15 +00:00
validation.c afs: Add more tracepoints to do with tracking validity 2024-12-20 22:34:06 +01:00
vl_alias.c afs: Drop the net parameter from afs_unuse_cell() 2025-03-10 09:47:15 +00:00
vl_list.c afs: Dispatch vlserver probes in priority order 2024-01-01 16:37:27 +00:00
vl_probe.c afs: Keep a record of the current fileserver endpoint state 2024-01-01 16:37:27 +00:00
vl_rotate.c afs: Simplify cell record handling 2025-03-10 09:47:15 +00:00
vlclient.c vfs-6.14-rc1.netfs 2025-01-20 09:29:11 -08:00
volume.c afs: Improve afs_volume tracing to display a debug ID 2025-03-10 09:47:15 +00:00
write.c afs: Make {Y,}FS.FetchData an asynchronous operation 2024-12-20 22:34:08 +01:00
xattr.c afs: Add __counted_by for struct afs_acl and use struct_size() 2023-12-01 09:51:43 -08:00
xdr_fs.h afs: Fix directory format encoding struct 2024-12-20 22:34:04 +01:00
yfsclient.c vfs-6.14-rc1.afs 2025-01-20 11:40:48 -08:00