lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Fri, 22 May 2020 18:37:29 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Amritha Nambiar <amritha.nambiar@...el.com>,
        netdev@...r.kernel.org, davem@...emloft.net, daniel@...earbox.net,
        ast@...nel.org
Cc:     kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
        kafai@...com, sridhar.samudrala@...el.com,
        amritha.nambiar@...el.com
Subject: Re: [bpf-next PATCH] bpf: Add rx_queue_mapping to bpf_sock

Hi Amritha,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on bpf-next/master]
[also build test ERROR on bpf/master net/master net-next/master v5.7-rc6 next-20200521]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Amritha-Nambiar/bpf-Add-rx_queue_mapping-to-bpf_sock/20200522-081144
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: x86_64-randconfig-a013-20200521 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 3393cc4cebf9969db94dc424b7a2b6195589c33b)
reproduce:
        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
        # 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: kbuild test robot <lkp@...el.com>

All errors (new ones prefixed by >>, old ones prefixed by <<):

>> net/core/filter.c:7878:34: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
BPF_FIELD_SIZEOF(struct sock, sk_rx_queue_mapping),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:423:59: note: expanded from macro 'BPF_FIELD_SIZEOF'
const int __size = bytes_to_bpf_size(sizeof_field(type, field));                                                                            ^
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:386:6: note: expanded from macro 'bytes_to_bpf_size'
if (bytes == sizeof(u8))                                               ^
include/linux/filter.h:245:31: note: expanded from macro 'BPF_LDX_MEM'
.code  = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM,                                          ~~~~~~~~~^~~~~
include/uapi/linux/bpf_common.h:17:27: note: expanded from macro 'BPF_SIZE'
#define BPF_SIZE(code)  ((code) & 0x18)
^~~~
>> net/core/filter.c:7878:34: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
BPF_FIELD_SIZEOF(struct sock, sk_rx_queue_mapping),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:423:59: note: expanded from macro 'BPF_FIELD_SIZEOF'
const int __size = bytes_to_bpf_size(sizeof_field(type, field));                                                                            ^
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:388:11: note: expanded from macro 'bytes_to_bpf_size'
else if (bytes == sizeof(u16))                                              ^
include/linux/filter.h:245:31: note: expanded from macro 'BPF_LDX_MEM'
.code  = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM,                                          ~~~~~~~~~^~~~~
include/uapi/linux/bpf_common.h:17:27: note: expanded from macro 'BPF_SIZE'
#define BPF_SIZE(code)  ((code) & 0x18)
^~~~
>> net/core/filter.c:7878:34: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
BPF_FIELD_SIZEOF(struct sock, sk_rx_queue_mapping),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:423:59: note: expanded from macro 'BPF_FIELD_SIZEOF'
const int __size = bytes_to_bpf_size(sizeof_field(type, field));                                                                            ^
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:390:11: note: expanded from macro 'bytes_to_bpf_size'
else if (bytes == sizeof(u32))                                              ^
include/linux/filter.h:245:31: note: expanded from macro 'BPF_LDX_MEM'
.code  = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM,                                          ~~~~~~~~~^~~~~
include/uapi/linux/bpf_common.h:17:27: note: expanded from macro 'BPF_SIZE'
#define BPF_SIZE(code)  ((code) & 0x18)
^~~~
>> net/core/filter.c:7878:34: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
BPF_FIELD_SIZEOF(struct sock, sk_rx_queue_mapping),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:423:59: note: expanded from macro 'BPF_FIELD_SIZEOF'
const int __size = bytes_to_bpf_size(sizeof_field(type, field));                                                                            ^
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:392:11: note: expanded from macro 'bytes_to_bpf_size'
else if (bytes == sizeof(u64))                                              ^
include/linux/filter.h:245:31: note: expanded from macro 'BPF_LDX_MEM'
.code  = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM,                                          ~~~~~~~~~^~~~~
include/uapi/linux/bpf_common.h:17:27: note: expanded from macro 'BPF_SIZE'
#define BPF_SIZE(code)  ((code) & 0x18)
^~~~
net/core/filter.c:7880:32: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
bpf_target_off(struct sock, sk_rx_queue_mapping,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:500:35: note: expanded from macro 'bpf_target_off'
BUILD_BUG_ON(sizeof_field(TYPE, MEMBER) != (SIZE));                                                                ^
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/build_bug.h:50:19: note: expanded from macro 'BUILD_BUG_ON'
BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
^
note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:338:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler.h:330:9: note: expanded from macro '__compiletime_assert'
if (!(condition))                                                                ^
include/linux/filter.h:248:12: note: expanded from macro 'BPF_LDX_MEM'
.off   = OFF,                                                               ^~~
net/core/filter.c:7882:11: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
sk_rx_queue_mapping),
^~~~~~~~~~~~~~~~~~~~~
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:500:47: note: expanded from macro 'bpf_target_off'
BUILD_BUG_ON(sizeof_field(TYPE, MEMBER) != (SIZE));                                                                            ^
include/linux/build_bug.h:50:19: note: expanded from macro 'BUILD_BUG_ON'
BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
^
note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:338:23: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler.h:330:9: note: expanded from macro '__compiletime_assert'
if (!(condition))                                                                ^
include/linux/filter.h:248:12: note: expanded from macro 'BPF_LDX_MEM'
.off   = OFF,                                                               ^~~
net/core/filter.c:7882:11: error: no member named 'sk_rx_queue_mapping' in 'struct sock'
sk_rx_queue_mapping),
^~~~~~~~~~~~~~~~~~~~~
include/linux/stddef.h:28:57: note: expanded from macro 'sizeof_field'
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
^
include/linux/filter.h:501:18: note: expanded from macro 'bpf_target_off'
*(PTR_SIZE) = (SIZE);                                                                             ^
include/linux/filter.h:248:12: note: expanded from macro 'BPF_LDX_MEM'
.off   = OFF,                                                               ^~~
>> net/core/filter.c:7880:4: error: no member named 'sk_rx_queue_mapping' in 'sock'
bpf_target_off(struct sock, sk_rx_queue_mapping,
^                           ~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:502:3: note: expanded from macro 'bpf_target_off'
offsetof(TYPE, MEMBER);                                                            ^              ~~~~~~
include/linux/stddef.h:17:32: note: expanded from macro 'offsetof'
#define offsetof(TYPE, MEMBER)  __compiler_offsetof(TYPE, MEMBER)
^                         ~~~~~~
include/linux/compiler_types.h:129:35: note: expanded from macro '__compiler_offsetof'
#define __compiler_offsetof(a, b)       __builtin_offsetof(a, b)
^                     ~
include/linux/filter.h:248:12: note: expanded from macro 'BPF_LDX_MEM'
.off   = OFF,                                                               ^~~
>> net/core/filter.c:7880:4: error: initializing '__s16' (aka 'short') with an expression of incompatible type 'void'
bpf_target_off(struct sock, sk_rx_queue_mapping,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/filter.h:499:2: note: expanded from macro 'bpf_target_off'
({                                                                                 ^
include/linux/filter.h:248:12: note: expanded from macro 'BPF_LDX_MEM'
.off   = OFF,                                                               ^~~
9 errors generated.

vim +7878 net/core/filter.c

  7722	
  7723	u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
  7724					const struct bpf_insn *si,
  7725					struct bpf_insn *insn_buf,
  7726					struct bpf_prog *prog, u32 *target_size)
  7727	{
  7728		struct bpf_insn *insn = insn_buf;
  7729		int off;
  7730	
  7731		switch (si->off) {
  7732		case offsetof(struct bpf_sock, bound_dev_if):
  7733			BUILD_BUG_ON(sizeof_field(struct sock, sk_bound_dev_if) != 4);
  7734	
  7735			if (type == BPF_WRITE)
  7736				*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7737						offsetof(struct sock, sk_bound_dev_if));
  7738			else
  7739				*insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7740					      offsetof(struct sock, sk_bound_dev_if));
  7741			break;
  7742	
  7743		case offsetof(struct bpf_sock, mark):
  7744			BUILD_BUG_ON(sizeof_field(struct sock, sk_mark) != 4);
  7745	
  7746			if (type == BPF_WRITE)
  7747				*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7748						offsetof(struct sock, sk_mark));
  7749			else
  7750				*insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7751					      offsetof(struct sock, sk_mark));
  7752			break;
  7753	
  7754		case offsetof(struct bpf_sock, priority):
  7755			BUILD_BUG_ON(sizeof_field(struct sock, sk_priority) != 4);
  7756	
  7757			if (type == BPF_WRITE)
  7758				*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7759						offsetof(struct sock, sk_priority));
  7760			else
  7761				*insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
  7762					      offsetof(struct sock, sk_priority));
  7763			break;
  7764	
  7765		case offsetof(struct bpf_sock, family):
  7766			*insn++ = BPF_LDX_MEM(
  7767				BPF_FIELD_SIZEOF(struct sock_common, skc_family),
  7768				si->dst_reg, si->src_reg,
  7769				bpf_target_off(struct sock_common,
  7770					       skc_family,
  7771					       sizeof_field(struct sock_common,
  7772							    skc_family),
  7773					       target_size));
  7774			break;
  7775	
  7776		case offsetof(struct bpf_sock, type):
  7777			*insn++ = BPF_LDX_MEM(
  7778				BPF_FIELD_SIZEOF(struct sock, sk_type),
  7779				si->dst_reg, si->src_reg,
  7780				bpf_target_off(struct sock, sk_type,
  7781					       sizeof_field(struct sock, sk_type),
  7782					       target_size));
  7783			break;
  7784	
  7785		case offsetof(struct bpf_sock, protocol):
  7786			*insn++ = BPF_LDX_MEM(
  7787				BPF_FIELD_SIZEOF(struct sock, sk_protocol),
  7788				si->dst_reg, si->src_reg,
  7789				bpf_target_off(struct sock, sk_protocol,
  7790					       sizeof_field(struct sock, sk_protocol),
  7791					       target_size));
  7792			break;
  7793	
  7794		case offsetof(struct bpf_sock, src_ip4):
  7795			*insn++ = BPF_LDX_MEM(
  7796				BPF_SIZE(si->code), si->dst_reg, si->src_reg,
  7797				bpf_target_off(struct sock_common, skc_rcv_saddr,
  7798					       sizeof_field(struct sock_common,
  7799							    skc_rcv_saddr),
  7800					       target_size));
  7801			break;
  7802	
  7803		case offsetof(struct bpf_sock, dst_ip4):
  7804			*insn++ = BPF_LDX_MEM(
  7805				BPF_SIZE(si->code), si->dst_reg, si->src_reg,
  7806				bpf_target_off(struct sock_common, skc_daddr,
  7807					       sizeof_field(struct sock_common,
  7808							    skc_daddr),
  7809					       target_size));
  7810			break;
  7811	
  7812		case bpf_ctx_range_till(struct bpf_sock, src_ip6[0], src_ip6[3]):
  7813	#if IS_ENABLED(CONFIG_IPV6)
  7814			off = si->off;
  7815			off -= offsetof(struct bpf_sock, src_ip6[0]);
  7816			*insn++ = BPF_LDX_MEM(
  7817				BPF_SIZE(si->code), si->dst_reg, si->src_reg,
  7818				bpf_target_off(
  7819					struct sock_common,
  7820					skc_v6_rcv_saddr.s6_addr32[0],
  7821					sizeof_field(struct sock_common,
  7822						     skc_v6_rcv_saddr.s6_addr32[0]),
  7823					target_size) + off);
  7824	#else
  7825			(void)off;
  7826			*insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
  7827	#endif
  7828			break;
  7829	
  7830		case bpf_ctx_range_till(struct bpf_sock, dst_ip6[0], dst_ip6[3]):
  7831	#if IS_ENABLED(CONFIG_IPV6)
  7832			off = si->off;
  7833			off -= offsetof(struct bpf_sock, dst_ip6[0]);
  7834			*insn++ = BPF_LDX_MEM(
  7835				BPF_SIZE(si->code), si->dst_reg, si->src_reg,
  7836				bpf_target_off(struct sock_common,
  7837					       skc_v6_daddr.s6_addr32[0],
  7838					       sizeof_field(struct sock_common,
  7839							    skc_v6_daddr.s6_addr32[0]),
  7840					       target_size) + off);
  7841	#else
  7842			*insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
  7843			*target_size = 4;
  7844	#endif
  7845			break;
  7846	
  7847		case offsetof(struct bpf_sock, src_port):
  7848			*insn++ = BPF_LDX_MEM(
  7849				BPF_FIELD_SIZEOF(struct sock_common, skc_num),
  7850				si->dst_reg, si->src_reg,
  7851				bpf_target_off(struct sock_common, skc_num,
  7852					       sizeof_field(struct sock_common,
  7853							    skc_num),
  7854					       target_size));
  7855			break;
  7856	
  7857		case offsetof(struct bpf_sock, dst_port):
  7858			*insn++ = BPF_LDX_MEM(
  7859				BPF_FIELD_SIZEOF(struct sock_common, skc_dport),
  7860				si->dst_reg, si->src_reg,
  7861				bpf_target_off(struct sock_common, skc_dport,
  7862					       sizeof_field(struct sock_common,
  7863							    skc_dport),
  7864					       target_size));
  7865			break;
  7866	
  7867		case offsetof(struct bpf_sock, state):
  7868			*insn++ = BPF_LDX_MEM(
  7869				BPF_FIELD_SIZEOF(struct sock_common, skc_state),
  7870				si->dst_reg, si->src_reg,
  7871				bpf_target_off(struct sock_common, skc_state,
  7872					       sizeof_field(struct sock_common,
  7873							    skc_state),
  7874					       target_size));
  7875			break;
  7876		case offsetof(struct bpf_sock, rx_queue_mapping):
  7877			*insn++ = BPF_LDX_MEM(
> 7878				BPF_FIELD_SIZEOF(struct sock, sk_rx_queue_mapping),
  7879				si->dst_reg, si->src_reg,
> 7880				bpf_target_off(struct sock, sk_rx_queue_mapping,
  7881					       sizeof_field(struct sock,
  7882							    sk_rx_queue_mapping),
  7883					       target_size));
  7884			*insn++ = BPF_JMP_IMM(BPF_JNE, si->dst_reg, NO_QUEUE_MAPPING,
  7885					      1);
  7886			*insn++ = BPF_MOV64_IMM(si->dst_reg, -1);
  7887			break;
  7888		}
  7889	
  7890		return insn - insn_buf;
  7891	}
  7892	

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

Download attachment ".config.gz" of type "application/gzip" (36144 bytes)

Powered by blists - more mailing lists