2022-11-05 16:06:43

by Chuck Lever

[permalink] [raw]
Subject: Re: [cel:topic-rpc-with-tls-upcall 12/16] net/sunrpc/xprtsock.c:2544: undefined reference to `tls_client_hello_x509'



> On Nov 5, 2022, at 2:05 AM, kernel test robot <[email protected]> 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 <[email protected]>
>
> 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!


> 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





2022-11-07 01:57:43

by Chen, Rong A

[permalink] [raw]
Subject: Re: [cel:topic-rpc-with-tls-upcall 12/16] net/sunrpc/xprtsock.c:2544: undefined reference to `tls_client_hello_x509'



On 11/6/2022 12:00 AM, Chuck Lever III wrote:
>
>
>> On Nov 5, 2022, at 2:05 AM, kernel test robot <[email protected]> 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 <[email protected]>
>>
>> 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
>
>
>
>