Re: [PATCH] nvme-tcp: fix link failure for TCP auth

From: Keith Busch
Date: Tue Sep 10 2024 - 10:43:16 EST


On Mon, Sep 09, 2024 at 08:21:09PM +0000, Arnd Bergmann wrote:
> The nvme fabric driver calls the nvme_tls_key_lookup() function from
> nvmf_parse_key() when the keyring is enabled, but this is broken in a
> configuration with CONFIG_NVME_FABRICS=y and CONFIG_NVME_TCP=m because
> this leads to the function definition being in a loadable module:
>
> x86_64-linux-ld: vmlinux.o: in function `nvmf_parse_key':
> fabrics.c:(.text+0xb1bdec): undefined reference to `nvme_tls_key_lookup'
>
> Move the 'select' up to CONFIG_NVME_FABRICS itself to force this
> part to be built-in as well if needed.

Thanks, applied to nvme-6.12.

I even try to test for these odd module vs built-in scenarios, but I
missed this one. :(

> It may alternatively be possible to rework the code so the
> keyring is only referenced when CONFIG_NVME_HOST_AUTH is also
> set, but this version is simpler and leaves the code unchanged.

That sounds like a cleaner solution longer term, but I agree your patch
is the simpler way to handle the breakage.