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 <l...@intel.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-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to