Hi Jussi, 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/Jussi-Maki/XDP-bonding-support/20210617-053146 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: x86_64-randconfig-s031-20210622 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/61fabab38aec5b8e0cdc33867e35ea9740da84c8 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jussi-Maki/XDP-bonding-support/20210617-053146 git checkout 61fabab38aec5b8e0cdc33867e35ea9740da84c8 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) drivers/net/bonding/bond_main.c:2660:26: sparse: sparse: restricted __be16 degrades to integer drivers/net/bonding/bond_main.c:2666:20: sparse: sparse: restricted __be16 degrades to integer drivers/net/bonding/bond_main.c:2713:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] vlan_proto @@ got int @@ drivers/net/bonding/bond_main.c:2713:40: sparse: expected restricted __be16 [usertype] vlan_proto drivers/net/bonding/bond_main.c:2713:40: sparse: got int drivers/net/bonding/bond_main.c:3561:25: sparse: sparse: restricted __be16 degrades to integer drivers/net/bonding/bond_main.c:3571:32: sparse: sparse: restricted __be16 degrades to integer >> drivers/net/bonding/bond_main.c:3640:48: sparse: sparse: incorrect type in argument 5 (different base types) @@ expected int l2_proto @@ got restricted __be16 [usertype] l2_proto @@ drivers/net/bonding/bond_main.c:3640:48: sparse: expected int l2_proto drivers/net/bonding/bond_main.c:3640:48: sparse: got restricted __be16 [usertype] l2_proto drivers/net/bonding/bond_main.c:3661:58: sparse: sparse: incorrect type in argument 5 (different base types) @@ expected int l2_proto @@ got restricted __be16 [usertype] l2_proto @@ drivers/net/bonding/bond_main.c:3661:58: sparse: expected int l2_proto drivers/net/bonding/bond_main.c:3661:58: sparse: got restricted __be16 [usertype] l2_proto >> drivers/net/bonding/bond_main.c:4633:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct bond_up_slave *slaves @@ got struct bond_up_slave [noderef] __rcu *usable_slaves @@ drivers/net/bonding/bond_main.c:4633:16: sparse: expected struct bond_up_slave *slaves drivers/net/bonding/bond_main.c:4633:16: sparse: got struct bond_up_slave [noderef] __rcu *usable_slaves drivers/net/bonding/bond_main.c:3552:52: sparse: sparse: restricted __be16 degrades to integer drivers/net/bonding/bond_main.c:3552:52: sparse: sparse: restricted __be16 degrades to integer vim +3640 drivers/net/bonding/bond_main.c 3615 3616 /* Extract the appropriate headers based on bond's xmit policy */ 3617 static bool bond_flow_dissect(struct bonding *bond, 3618 struct sk_buff *skb, 3619 const void *data, 3620 __be16 l2_proto, 3621 int nhoff, 3622 int hlen, 3623 struct flow_keys *fk) 3624 { 3625 bool l34 = bond->params.xmit_policy == BOND_XMIT_POLICY_LAYER34; 3626 int ip_proto = -1; 3627 3628 switch (bond->params.xmit_policy) { 3629 case BOND_XMIT_POLICY_ENCAP23: 3630 case BOND_XMIT_POLICY_ENCAP34: 3631 memset(fk, 0, sizeof(*fk)); 3632 return __skb_flow_dissect(NULL, skb, &flow_keys_bonding, 3633 fk, data, l2_proto, nhoff, hlen, 0); 3634 default: 3635 break; 3636 } 3637 3638 fk->ports.ports = 0; 3639 memset(&fk->icmp, 0, sizeof(fk->icmp)); > 3640 if (!bond_flow_ip(skb, fk, data, hlen, l2_proto, &nhoff, &ip_proto, l34)) 3641 return false; 3642 3643 /* ICMP error packets contains at least 8 bytes of the header 3644 * of the packet which generated the error. Use this information 3645 * to correlate ICMP error packets within the same flow which 3646 * generated the error. 3647 */ 3648 if (ip_proto == IPPROTO_ICMP || ip_proto == IPPROTO_ICMPV6) { 3649 skb_flow_get_icmp_tci(skb, &fk->icmp, data, nhoff, hlen); 3650 if (ip_proto == IPPROTO_ICMP) { 3651 if (!icmp_is_err(fk->icmp.type)) 3652 return true; 3653 3654 nhoff += sizeof(struct icmphdr); 3655 } else if (ip_proto == IPPROTO_ICMPV6) { 3656 if (!icmpv6_is_err(fk->icmp.type)) 3657 return true; 3658 3659 nhoff += sizeof(struct icmp6hdr); 3660 } 3661 return bond_flow_ip(skb, fk, data, hlen, l2_proto, &nhoff, &ip_proto, l34); 3662 } 3663 3664 return true; 3665 } 3666 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org