linux/fs/afs
David Howells 7922b1f058 afs: Fix the maximum cell name length
[ Upstream commit 8fd56ad6e7 ]

The kafs filesystem limits the maximum length of a cell to 256 bytes, but a
problem occurs if someone actually does that: kafs tries to create a
directory under /proc/net/afs/ with the name of the cell, but that fails
with a warning:

        WARNING: CPU: 0 PID: 9 at fs/proc/generic.c:405

because procfs limits the maximum filename length to 255.

However, the DNS limits the maximum lookup length and, by extension, the
maximum cell name, to 255 less two (length count and trailing NUL).

Fix this by limiting the maximum acceptable cellname length to 253.  This
also allows us to be sure we can create the "/afs/.<cell>/" mountpoint too.

Further, split the YFS VL record cell name maximum to be the 256 allowed by
the protocol and ignore the record retrieved by YFSVL.GetCellName if it
exceeds 253.

Fixes: c3e9f88826 ("afs: Implement client support for the YFSVL.GetCellName RPC op")
Reported-by: syzbot+7848fee1f1e5c53f912b@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/r/6776d25d.050a0220.3a8527.0048.GAE@google.com/
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/376236.1736180460@warthog.procyon.org.uk
Tested-by: syzbot+7848fee1f1e5c53f912b@syzkaller.appspotmail.com
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-01-17 13:40:43 +01:00
..
addr_list.c afs: Remove the unimplemented afs_cmp_addr_list() 2024-01-01 16:37:26 +00:00
addr_prefs.c afs: Mark address lists with configured priorities 2024-01-01 16:37:27 +00:00
afs.h afs: Fix the maximum cell name length 2025-01-17 13:40:43 +01:00
afs_cm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
afs_fs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
afs_vl.h afs: Fix the maximum cell name length 2025-01-17 13:40:43 +01:00
callback.c afs: Overhaul invalidation handling to better support RO volumes 2024-01-01 16:37:27 +00:00
cell.c afs: Overhaul invalidation handling to better support RO volumes 2024-01-01 16:37:27 +00:00
cmservice.c rxrpc, afs: Allow afs to pin rxrpc_peer objects 2023-12-24 15:22:50 +00:00
dir.c afs: Fix missing subdir edit when renamed between parent dirs 2024-10-24 13:50:27 +02:00
dir_edit.c afs: Fix missing subdir edit when renamed between parent dirs 2024-10-24 13:50:27 +02:00
dir_silly.c afs: Simplify error handling 2023-12-24 15:22:53 +00:00
dynroot.c afs: Remove afs_dynroot_d_revalidate() as it is redundant 2024-01-22 22:30:14 +00:00
file.c afs: Fix missing wire-up of afs_retry_request() 2024-09-27 18:29:19 +02:00
flock.c afs: adapt to breakup of struct file_lock 2024-02-05 13:11:42 +01:00
fs_operation.c afs: Fix the setting of the server responding flag 2024-09-27 18:29:20 +02:00
fs_probe.c afs: Fix possible infinite loop with unresponsive servers 2024-09-27 18:29:19 +02:00
fsclient.c netfs: Speed up buffered reading 2024-09-12 12:20:41 +02:00
inode.c afs: Fix post-setattr file edit to do truncation correctly 2024-08-24 16:09:16 +02:00
internal.h vfs-6.12-rc6.fixes 2024-11-01 07:37:10 -10:00
Kconfig afs: Convert afs to use the new fscache API 2022-01-07 13:44:47 +00:00
main.c afs: Fix ignored callbacks over ipv4 2024-02-20 09:51:21 +01:00
Makefile afs: Move the vnode/volume validity checking code into its own file 2024-01-01 16:37:27 +00:00
misc.c afs: Simplify error handling 2023-12-24 15:22:53 +00:00
mntpt.c afs: Don't cross .backup mountpoint from backup volume 2024-05-25 14:02:40 +02:00
proc.c afs: Fix missing/incorrect unlocking of RCU read lock 2024-01-22 22:30:38 +00:00
protocol_afs.h afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
protocol_uae.h afs: Add support for the UAE error table 2019-06-28 18:37:53 +01:00
protocol_yfs.h afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
rotate.c afs: Fix possible infinite loop with unresponsive servers 2024-09-27 18:29:19 +02:00
rxrpc.c afs: Fix lock recursion 2024-10-17 15:33:46 +02:00
security.c fs: port ->permission() to pass mnt_idmap 2023-01-19 09:24:28 +01:00
server.c afs: Fix ignored callbacks over ipv4 2024-02-20 09:51:21 +01:00
server_list.c afs: Fix fileserver rotation 2024-01-01 16:37:27 +00:00
super.c vfs-6.8.netfs 2024-01-19 09:10:23 -08:00
validation.c afs: Use alternative invalidation to using launder_folio 2024-05-01 18:07:34 +01:00
vl_alias.c afs: Fix the maximum cell name length 2025-01-17 13:40:43 +01: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: Add some more info to /proc/net/afs/servers 2024-01-01 16:36:58 +00:00
vlclient.c afs: Fix the maximum cell name length 2025-01-17 13:40:43 +01:00
volume.c afs: Increase buffer size in afs_update_volume_status() 2024-02-20 09:51:21 +01:00
write.c netfs: Move max_len/max_nr_segs from netfs_io_subrequest to netfs_io_stream 2024-09-05 11:00:41 +02: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 entry size calculation 2021-01-04 12:25:19 +00:00
yfsclient.c netfs: Speed up buffered reading 2024-09-12 12:20:41 +02:00