Re: [PATCH v1 bpf-next 05/11] tcp: Migrate TCP_NEW_SYN_RECV requests.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kuniyuki,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]

url:    https://github.com/0day-ci/linux/commits/Kuniyuki-Iwashima/Socket-migration-for-SO_REUSEPORT/20201201-225221
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: x86_64-randconfig-a004-20201201 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project ac40a2d8f16b8a8c68fc811d67f647740e965cb8)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/9bf64de730c19cb543dbfbce6181938b27c6ebf5
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Kuniyuki-Iwashima/Socket-migration-for-SO_REUSEPORT/20201201-225221
        git checkout 9bf64de730c19cb543dbfbce6181938b27c6ebf5
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> net/core/sock_reuseport.c:320:14: warning: no previous prototype for function '__reuseport_select_sock' [-Wmissing-prototypes]
   struct sock *__reuseport_select_sock(struct sock *sk, u32 hash,
                ^
   net/core/sock_reuseport.c:320:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct sock *__reuseport_select_sock(struct sock *sk, u32 hash,
   ^
   static 
   1 warning generated.

vim +/__reuseport_select_sock +320 net/core/sock_reuseport.c

   307	
   308	/**
   309	 *  reuseport_select_sock - Select a socket from an SO_REUSEPORT group.
   310	 *  @sk: First socket in the group.
   311	 *  @hash: When no BPF filter is available, use this hash to select.
   312	 *  @skb: skb to run through BPF filter.
   313	 *  @hdr_len: BPF filter expects skb data pointer at payload data.  If
   314	 *    the skb does not yet point at the payload, this parameter represents
   315	 *    how far the pointer needs to advance to reach the payload.
   316	 *  @migration: represents if it is selecting a listener for SYN or
   317	 *    migrating ESTABLISHED/SYN_RECV sockets or NEW_SYN_RECV socket.
   318	 *  Returns a socket that should receive the packet (or NULL on error).
   319	 */
 > 320	struct sock *__reuseport_select_sock(struct sock *sk, u32 hash,
   321					     struct sk_buff *skb, int hdr_len,
   322					     u8 migration)
   323	{
   324		struct sock_reuseport *reuse;
   325		struct bpf_prog *prog;
   326		struct sock *sk2 = NULL;
   327		u16 socks;
   328	
   329		rcu_read_lock();
   330		reuse = rcu_dereference(sk->sk_reuseport_cb);
   331	
   332		/* if memory allocation failed or add call is not yet complete */
   333		if (!reuse)
   334			goto out;
   335	
   336		socks = READ_ONCE(reuse->num_socks);
   337		if (likely(socks)) {
   338			/* paired with smp_wmb() in reuseport_add_sock() */
   339			smp_rmb();
   340	
   341			prog = rcu_dereference(reuse->prog);
   342			if (!prog)
   343				goto select_by_hash;
   344	
   345			if (migration)
   346				goto out;
   347	
   348			if (!skb)
   349				goto select_by_hash;
   350	
   351			if (prog->type == BPF_PROG_TYPE_SK_REUSEPORT)
   352				sk2 = bpf_run_sk_reuseport(reuse, sk, prog, skb, hash);
   353			else
   354				sk2 = run_bpf_filter(reuse, socks, prog, skb, hdr_len);
   355	
   356	select_by_hash:
   357			/* no bpf or invalid bpf result: fall back to hash usage */
   358			if (!sk2) {
   359				int i, j;
   360	
   361				i = j = reciprocal_scale(hash, socks);
   362				while (reuse->socks[i]->sk_state == TCP_ESTABLISHED) {
   363					i++;
   364					if (i >= reuse->num_socks)
   365						i = 0;
   366					if (i == j)
   367						goto out;
   368				}
   369				sk2 = reuse->socks[i];
   370			}
   371		}
   372	
   373	out:
   374		rcu_read_unlock();
   375		return sk2;
   376	}
   377	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux