Subject: Re: [PATCH net-next v2 09/12] gtp: support GRO

From: kernel test robot <[email-masked]>
Date: Fri, 11 Dec 2020 23:43:43 +0800

Hi Jonas,

I love your patch! Perhaps something to improve:

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

url:    https://github.com/0day-ci/linux/commits/Jonas-Bonn/gtp-IPv6-support/20201211-203639
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 91163f82143630a9629a8bf0227d49173697c69c
config: mips-randconfig-r026-20201209 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 5ff35356f1af2bb92785b38c657463924d9ec386)
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 mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # https://github.com/0day-ci/linux/commit/de5669628a8f684dd7ed378aaf2a997221d243fa
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Jonas-Bonn/gtp-IPv6-support/20201211-203639
        git checkout de5669628a8f684dd7ed378aaf2a997221d243fa
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email-masked]>

All warnings (new ones prefixed by >>):

>> drivers/net/gtp.c:402:2: warning: variable 'err' is used uninitialized whenever 'if' condition is true
   if (!ptype)
   ^~~~~~~~~~~
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( , ## __VA_ARGS__) ) )
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:58:30: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) (cond) : __trace_if_value(cond))
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/gtp.c:413:9: note: uninitialized use occurs here
   return err;
   ^~~
   drivers/net/gtp.c:402:2: note: remove the 'if' if its condition is always false
   if (!ptype)
   ^~~~~~~~~~~
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( , ## __VA_ARGS__) ) )
   ^
>> drivers/net/gtp.c:396:2: warning: variable 'err' is used uninitialized whenever switch default is taken
   default:
   ^~~~~~~
   drivers/net/gtp.c:413:9: note: uninitialized use occurs here
   return err;
   ^~~
   drivers/net/gtp.c:372:9: note: initialize the variable 'err' to silence this warning
   int err;
   ^
   = 0
   fatal error: error in backend: Nested variants found in inline asm string: ' .set push
   .set mips64r2
   .if ( 0x00 ) != -1)) 0x00 ) != -1)) : ($( static struct ftrace_branch_data __attribute__((__aligned__(4))) __attribute__((__section__("_ftrace_branch"))) __if_trace = $( .func = __func__, .file = "arch/mips/include/asm/atomic.h", .line = 153, $); 0x00 ) != -1)) : $))) ) && ( 0 ); .set push; .set mips64r2; .rept 1; sync 0x00; .endr; .set pop; .else; ; .endif
   1: ll $1, $2 # atomic_fetch_add
   addu $0, $1, $3
   sc $0, $2
   beqz $0, 1b
   .set pop
   move $0, $1
   '
   clang-12: error: clang frontend command failed with exit code 70 (use -v to see invocation)
   clang version 12.0.0 (git://gitmirror/llvm_project 5ff35356f1af2bb92785b38c657463924d9ec386)
   Target: mipsel-unknown-linux-gnu
   Thread model: posix
   InstalledDir: /opt/cross/clang-5ff35356f1/bin
   clang-12: note: diagnostic msg:
   Makefile arch drivers include kernel scripts source usr

vim +402 drivers/net/gtp.c

   363	
   364	static int gtp_gro_complete(struct sock *sk, struct sk_buff * skb, int nhoff)
   365	{
   366		size_t hdrlen;
   367		char* gtphdr = skb->data + nhoff;
   368		u8 version;
   369		__be16 type;
   370		struct packet_offload *ptype;
   371		uint8_t ipver;
   372		int err;
   373	
   374		version = *gtphdr >> 5;
   375		switch (version) {
   376		case GTP_V0:
   377			hdrlen = sizeof(struct gtp0_header);
   378			break;
   379		case GTP_V1:
   380			hdrlen = sizeof(struct gtp1_header);
   381			if (*gtphdr & GTP1_F_MASK)
   382				hdrlen += 4;
   383			break;
   384		}
   385	
   386		skb_set_inner_network_header(skb, nhoff + hdrlen);
   387	
   388		ipver = inner_ip_hdr(skb)->version;
   389		switch (ipver) {
   390		case 4:
   391			type = cpu_to_be16(ETH_P_IP);
   392			break;
   393		case 6:
   394			type = cpu_to_be16(ETH_P_IPV6);
   395			break;
 > 396		default:
   397			goto out;
   398		}
   399	
   400		rcu_read_lock();
   401		ptype = gro_find_complete_by_type(type);
 > 402		if (!ptype)
   403			goto out_unlock;
   404	
   405		err = ptype->callbacks.gro_complete(skb, nhoff + hdrlen);
   406	
   407		skb_set_inner_mac_header(skb, nhoff + hdrlen);
   408	
   409	out_unlock:
   410		rcu_read_unlock();
   411	out:
   412	
   413		return err;
   414	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email-masked]