• Hannes Reinecke's avatar
    nvme: keyring: fix conditional compilation · 706add13
    Hannes Reinecke authored
    The keyring and auth functions can be called from both the host and
    the target side and are controlled by Kconfig options for each of the
    combinations, but the declarations are controlled by #ifdef checks
    on the shared Kconfig symbols.
    
    This leads to link failures in combinations where one of the frontends
    is built-in and the other one is a module, and the keyring code
    ends up in a module that is not reachable from the builtin code:
    
    ld: drivers/nvme/host/core.o: in function `nvme_core_exit':
    core.c:(.exit.text+0x4): undefined reference to `nvme_keyring_exit'
    ld: drivers/nvme/host/core.o: in function `nvme_core_init':
    core.c:(.init.text+0x94): undefined reference to `nvme_keyring_init
    
    ld: drivers/nvme/host/tcp.o: in function `nvme_tcp_setup_ctrl':
    tcp.c:(.text+0x4c18): undefined reference to `nvme_tls_psk_default'
    
    Address this by moving nvme_keyring_init()/nvme_keyring_exit() into
    module init/exit functions for the keyring module.
    
    Fixes: be8e82ca ("nvme-tcp: enable TLS handshake upcall")
    Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    706add13
core.c 125 KB