nfs: add missing selections of CONFIG_CRC32
authorEric Biggers <ebiggers@google.com>
Tue, 1 Apr 2025 22:02:21 +0000 (15:02 -0700)
committerChuck Lever <chuck.lever@oracle.com>
Sun, 13 Apr 2025 20:39:42 +0000 (16:39 -0400)
commitcd35b6cb46649750b7dbd0df0e2d767415d8917b
treeb460cd16b7d1a6acabff55fea378de2135f7f63a
parent26a80762153ba0dc98258b5e6d2e9741178c5114
nfs: add missing selections of CONFIG_CRC32

nfs.ko, nfsd.ko, and lockd.ko all use crc32_le(), which is available
only when CONFIG_CRC32 is enabled.  But the only NFS kconfig option that
selected CONFIG_CRC32 was CONFIG_NFS_DEBUG, which is client-specific and
did not actually guard the use of crc32_le() even on the client.

The code worked around this bug by only actually calling crc32_le() when
CONFIG_CRC32 is built-in, instead hard-coding '0' in other cases.  This
avoided randconfig build errors, and in real kernels the fallback code
was unlikely to be reached since CONFIG_CRC32 is 'default y'.  But, this
really needs to just be done properly, especially now that I'm planning
to update CONFIG_CRC32 to not be 'default y'.

Therefore, make CONFIG_NFS_FS, CONFIG_NFSD, and CONFIG_LOCKD select
CONFIG_CRC32.  Then remove the fallback code that becomes unnecessary,
as well as the selection of CONFIG_CRC32 from CONFIG_NFS_DEBUG.

Fixes: 1264a2f053a3 ("NFS: refactor code for calculating the crc32 hash of a filehandle")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Acked-by: Anna Schumaker <anna.schumaker@oracle.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/Kconfig
fs/nfs/Kconfig
fs/nfs/internal.h
fs/nfs/nfs4session.h
fs/nfsd/Kconfig
fs/nfsd/nfsfh.h
include/linux/nfs.h