Thread (14 messages) 14 messages, 2 authors, 2018-01-03

Re: [PATCH v3 bpf-next 10/11] bpf: Add BPF_SOCK_OPS_STATE_CB

From: Lawrence Brakmo <hidden>
Date: 2018-01-03 08:22:10

We created a new enum to allow different TCP state names between the kernel and BPF sock_ops programs. Since we want to catch changes in the original enum, we are comparing the values of the last entries of the enum types (which is triggering the warning). 

On 1/1/18, 8:02 PM, "kbuild test robot" [off-list ref] wrote:

    Hi Lawrence,
    
    Thank you for the patch! Perhaps something to improve:
    
    [auto build test WARNING on net-next/master]
    [also build test WARNING on next-20171222]
    [cannot apply to bpf-next/master linus/master net/master v4.15-rc6]
    [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
    
    url:    https://github.com/0day-ci/linux/commits/Lawrence-Brakmo/bpf-More-sock_ops-callbacks/20180102-111550
    config: x86_64-randconfig-x007-201800 (attached as .config)
    compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
    reproduce:
            # save the attached .config to linux build tree
            make ARCH=x86_64 
    
    All warnings (new ones prefixed by >>):
    
       In file included from arch/x86/include/asm/atomic.h:5:0,
                        from include/linux/atomic.h:5,
                        from include/linux/crypto.h:20,
                        from include/crypto/hash.h:16,
                        from net//ipv4/tcp.c:250:
       net//ipv4/tcp.c: In function 'tcp_set_state':
    >> net//ipv4/tcp.c:2041:34: warning: comparison between 'enum <anonymous>' and 'enum <anonymous>' [-Wenum-compare]
         BUILD_BUG_ON(BPF_TCP_MAX_STATES != TCP_MAX_STATES);
                                         ^
       include/linux/compiler.h:301:19: note: in definition of macro '__compiletime_assert'
          bool __cond = !(condition);    \
                          ^~~~~~~~~
       include/linux/compiler.h:324:2: note: in expansion of macro '_compiletime_assert'
         _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
         ^~~~~~~~~~~~~~~~~~~
       include/linux/build_bug.h:47:37: note: in expansion of macro 'compiletime_assert'
        #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                            ^~~~~~~~~~~~~~~~~~
       include/linux/build_bug.h:71:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
         BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         ^~~~~~~~~~~~~~~~
    >> net//ipv4/tcp.c:2041:2: note: in expansion of macro 'BUILD_BUG_ON'
         BUILD_BUG_ON(BPF_TCP_MAX_STATES != TCP_MAX_STATES);
         ^~~~~~~~~~~~
    
    vim +/BUILD_BUG_ON +2041 net//ipv4/tcp.c
    
      2036	
      2037	void tcp_set_state(struct sock *sk, int state)
      2038	{
      2039		int oldstate = sk->sk_state;
      2040	
    > 2041		BUILD_BUG_ON(BPF_TCP_MAX_STATES != TCP_MAX_STATES);
      2042		if (BPF_SOCK_OPS_TEST_FLAG(tcp_sk(sk), BPF_SOCK_OPS_STATE_CB_FLAG))
      2043			tcp_call_bpf_2arg(sk, BPF_SOCK_OPS_STATE_CB, oldstate, state);
      2044	
      2045		switch (state) {
      2046		case TCP_ESTABLISHED:
      2047			if (oldstate != TCP_ESTABLISHED)
      2048				TCP_INC_STATS(sock_net(sk), TCP_MIB_CURRESTAB);
      2049			break;
      2050	
      2051		case TCP_CLOSE:
      2052			if (oldstate == TCP_CLOSE_WAIT || oldstate == TCP_ESTABLISHED)
      2053				TCP_INC_STATS(sock_net(sk), TCP_MIB_ESTABRESETS);
      2054	
      2055			sk->sk_prot->unhash(sk);
      2056			if (inet_csk(sk)->icsk_bind_hash &&
      2057			    !(sk->sk_userlocks & SOCK_BINDPORT_LOCK))
      2058				inet_put_port(sk);
      2059			/* fall through */
      2060		default:
      2061			if (oldstate == TCP_ESTABLISHED)
      2062				TCP_DEC_STATS(sock_net(sk), TCP_MIB_CURRESTAB);
      2063		}
      2064	
      2065		/* Change state AFTER socket is unhashed to avoid closed
      2066		 * socket sitting in hash tables.
      2067		 */
      2068		inet_sk_state_store(sk, state);
      2069	
    
    ---
    0-DAY kernel test infrastructure                Open Source Technology Center
    https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.01.org_pipermail_kbuild-2Dall&d=DwIBAg&c=5VD0RTtNlTh3ycd41b3MUw&r=pq_Mqvzfy-C8ltkgyx1u_g&m=Q7DgPe3X_jy4GHXyZsGUWwNoAYwdvyKbdsSNwopo4LA&s=hDQMCMBEVY9MOxG2fIWSCTeKMAmXhkbFc6batWKJgBg&e=                   Intel Corporation
    
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help