Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

afs: Fix directory format encoding struct

The AFS directory format structure, union afs_xdr_dir_block::meta, has too
many alloc counter slots declared and so pushes the hash table along and
over the data. This doesn't cause a problem at the moment because I'm
currently ignoring the hash table and only using the correct number of
alloc_ctrs in the code anyway. In future, however, I should start using
the hash table to try and speed up afs_lookup().

Fix this by using the correct constant to declare the counter array.

Fixes: 4ea219a839bf ("afs: Split the directory content defs into a header")
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20241216204124.3752367-14-dhowells@redhat.com
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

David Howells and committed by
Christian Brauner
07a10767 b49194da

+1 -1
+1 -1
fs/afs/xdr_fs.h
··· 88 88 89 89 struct { 90 90 struct afs_xdr_dir_hdr hdr; 91 - u8 alloc_ctrs[AFS_DIR_MAX_BLOCKS]; 91 + u8 alloc_ctrs[AFS_DIR_BLOCKS_WITH_CTR]; 92 92 __be16 hashtable[AFS_DIR_HASHTBL_SIZE]; 93 93 } meta; 94 94