On 11/6/2022 12:00 AM, Chuck Lever III wrote:
On Nov 5, 2022, at 2:05 AM, kernel test robot <lkp@xxxxxxxxx> wrote:
tree: git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux topic-rpc-with-tls-upcall
head: 92abd0e9e73597857455026e8312192264aaabf9
commit: b39cc345e2d6ed4f37bea31528ccbfaa3dec4f69 [12/16] SUNRPC: Add RPC-with-TLS support to xprtsock.c
config: x86_64-rhel-8.3-kvm
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/commit/?id=b39cc345e2d6ed4f37bea31528ccbfaa3dec4f69
git remote add cel git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
git fetch --no-tags cel topic-rpc-with-tls-upcall
git checkout b39cc345e2d6ed4f37bea31528ccbfaa3dec4f69
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
ld: net/sunrpc/xprtsock.o: in function `xs_tls_handshake_sync':
net/sunrpc/xprtsock.c:2544: undefined reference to `tls_client_hello_x509'
ld: net/sunrpc/xprtsock.c:2539: undefined reference to `tls_client_hello_anon'
pahole: .tmp_vmlinux.btf: No such file or directory
.btf.vmlinux.bin.o: file not recognized: file format not recognized
I am not able to reproduce this build failure.
I'm on Fedora 36 with gcc-12.2.1-2
CONFIG_TLS=m
CONFIG_TLS_DEVICE=y
CONFIG_SUNRPC=y
Any help appreciated!
Hi Chuck,
I can reproduce it with gcc-11/gcc-12 on ubuntu 21.10,
and this issue disappeared if CONFIG_TLS=y.
Best Regards,
Rong Chen
vim +2544 net/sunrpc/xprtsock.c
2526
2527 static int xs_tls_handshake_sync(struct rpc_xprt *lower_xprt, struct xprtsec_parms *xprtsec)
2528 {
2529 struct sock_xprt *lower_transport =
2530 container_of(lower_xprt, struct sock_xprt, xprt);
2531 int rc;
2532
2533 init_completion(&lower_transport->handshake_done);
2534 set_bit(XPRT_SOCK_IGNORE_RECV, &lower_transport->sock_state);
2535
2536 lower_transport->xprt_err = -ETIMEDOUT;
2537 switch (xprtsec->policy) {
2538 case RPC_XPRTSEC_TLS_ANON:
2539 rc = tls_client_hello_anon(lower_transport->sock,
2540 xs_tls_handshake_done, xprt_get(lower_xprt),
2541 TLSH_DEFAULT_PRIORITIES);
2542 break;
2543 case RPC_XPRTSEC_TLS_X509:
2544 rc = tls_client_hello_x509(lower_transport->sock,
2545 xs_tls_handshake_done, xprt_get(lower_xprt),
2546 TLSH_DEFAULT_PRIORITIES,
2547 xprtsec->cert_serial,
2548 xprtsec->privkey_serial);
2549 break;
2550 default:
2551 rc = -EACCES;
2552 }
2553 if (rc)
2554 goto out;
2555
2556 rc = wait_for_completion_interruptible_timeout(&lower_transport->handshake_done,
2557 XS_TLS_HANDSHAKE_TO);
2558 if (rc < 0)
2559 goto out;
2560
2561 rc = lower_transport->xprt_err;
2562
2563 out:
2564 xs_stream_reset_connect(lower_transport);
2565 clear_bit(XPRT_SOCK_IGNORE_RECV, &lower_transport->sock_state);
2566 return rc;
2567 }
2568
--
0-DAY CI Kernel Test Service
https://01.org/lkp
<config.txt>
--
Chuck Lever