All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Paolo Abeni <pabeni@redhat.com>
Cc: kbuild-all@lists.01.org, netdev@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	Edward Cree <ecree@solarflare.com>
Subject: Re: [PATCH net-next 1/2] ipv6: introduce and uses route look hints for list input
Date: Sun, 17 Nov 2019 19:46:43 +0800	[thread overview]
Message-ID: <201911171912.pVIJyAXV%lkp@intel.com> (raw)
In-Reply-To: <9b3b3a66894a1714266db1d3cb3268efe243509e.1573893340.git.pabeni@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 7221 bytes --]

Hi Paolo,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]
[also build test WARNING on v5.4-rc7 next-20191115]
[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/Paolo-Abeni/net-introduce-and-use-route-hint/20191116-172108
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 20021578ba226bda1f0ddf50e4d4a12ea1c6c6c1
config: i386-randconfig-h003-20191117 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/export.h:42:0,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    from include/linux/uio.h:8,
                    from include/linux/socket.h:8,
                    from net/ipv6/ip6_input.c:20:
   net/ipv6/ip6_input.c: In function 'ip6_list_rcv_finish':
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                                ^~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~

vim +/if +124 net/ipv6/ip6_input.c

  > 20	#include <linux/socket.h>
    21	#include <linux/sockios.h>
    22	#include <linux/net.h>
    23	#include <linux/netdevice.h>
    24	#include <linux/in6.h>
    25	#include <linux/icmpv6.h>
    26	#include <linux/mroute6.h>
    27	#include <linux/slab.h>
    28	#include <linux/indirect_call_wrapper.h>
    29	
    30	#include <linux/netfilter.h>
    31	#include <linux/netfilter_ipv6.h>
    32	
    33	#include <net/sock.h>
    34	#include <net/snmp.h>
    35	
    36	#include <net/ipv6.h>
    37	#include <net/protocol.h>
    38	#include <net/transp_v6.h>
    39	#include <net/rawv6.h>
    40	#include <net/ndisc.h>
    41	#include <net/ip6_route.h>
    42	#include <net/addrconf.h>
    43	#include <net/xfrm.h>
    44	#include <net/inet_ecn.h>
    45	#include <net/dst_metadata.h>
    46	
    47	struct ip6_route_input_hint {
    48		unsigned long	refdst;
    49		struct in6_addr daddr;
    50	};
    51	
    52	INDIRECT_CALLABLE_DECLARE(void udp_v6_early_demux(struct sk_buff *));
    53	INDIRECT_CALLABLE_DECLARE(void tcp_v6_early_demux(struct sk_buff *));
    54	static void ip6_rcv_finish_core(struct net *net, struct sock *sk,
    55					struct sk_buff *skb,
    56					struct ip6_route_input_hint *hint)
    57	{
    58		void (*edemux)(struct sk_buff *skb);
    59	
    60		if (net->ipv4.sysctl_ip_early_demux && !skb_dst(skb) && skb->sk == NULL) {
    61			const struct inet6_protocol *ipprot;
    62	
    63			ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]);
    64			if (ipprot && (edemux = READ_ONCE(ipprot->early_demux)))
    65				INDIRECT_CALL_2(edemux, tcp_v6_early_demux,
    66						udp_v6_early_demux, skb);
    67		}
    68	
    69		if (skb_valid_dst(skb))
    70			return;
    71	
    72		if (hint && ipv6_addr_equal(&hint->daddr, &ipv6_hdr(skb)->daddr))
    73			__skb_dst_copy(skb, hint->refdst);
    74		else
    75			ip6_route_input(skb);
    76	}
    77	
    78	int ip6_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
    79	{
    80		/* if ingress device is enslaved to an L3 master device pass the
    81		 * skb to its handler for processing
    82		 */
    83		skb = l3mdev_ip6_rcv(skb);
    84		if (!skb)
    85			return NET_RX_SUCCESS;
    86		ip6_rcv_finish_core(net, sk, skb, NULL);
    87	
    88		return dst_input(skb);
    89	}
    90	
    91	static void ip6_sublist_rcv_finish(struct list_head *head)
    92	{
    93		struct sk_buff *skb, *next;
    94	
    95		list_for_each_entry_safe(skb, next, head, list) {
    96			skb_list_del_init(skb);
    97			dst_input(skb);
    98		}
    99	}
   100	
   101	static void ip6_list_rcv_finish(struct net *net, struct sock *sk,
   102					struct list_head *head)
   103	{
   104		struct ip6_route_input_hint _hint, *hint = NULL;
   105		struct dst_entry *curr_dst = NULL;
   106		struct sk_buff *skb, *next;
   107		struct list_head sublist;
   108	
   109		INIT_LIST_HEAD(&sublist);
   110		list_for_each_entry_safe(skb, next, head, list) {
   111			struct dst_entry *dst;
   112	
   113			skb_list_del_init(skb);
   114			/* if ingress device is enslaved to an L3 master device pass the
   115			 * skb to its handler for processing
   116			 */
   117			skb = l3mdev_ip6_rcv(skb);
   118			if (!skb)
   119				continue;
   120			ip6_rcv_finish_core(net, sk, skb, hint);
   121			dst = skb_dst(skb);
   122			if (curr_dst != dst) {
   123	#ifndef CONFIG_IPV6_SUBTREES
 > 124				if (!net->ipv6.fib6_has_custom_rules) {
   125					_hint.refdst = skb->_skb_refdst;
   126					memcpy(&_hint.daddr, &ipv6_hdr(skb)->daddr,
   127					       sizeof(_hint.daddr));
   128					hint = &_hint;
   129				}
   130	#endif
   131	
   132				/* dispatch old sublist */
   133				if (!list_empty(&sublist))
   134					ip6_sublist_rcv_finish(&sublist);
   135				/* start new sublist */
   136				INIT_LIST_HEAD(&sublist);
   137				curr_dst = dst;
   138			}
   139			list_add_tail(&skb->list, &sublist);
   140		}
   141		/* dispatch final sublist */
   142		ip6_sublist_rcv_finish(&sublist);
   143	}
   144	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31708 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH net-next 1/2] ipv6: introduce and uses route look hints for list input
Date: Sun, 17 Nov 2019 19:46:43 +0800	[thread overview]
Message-ID: <201911171912.pVIJyAXV%lkp@intel.com> (raw)
In-Reply-To: <9b3b3a66894a1714266db1d3cb3268efe243509e.1573893340.git.pabeni@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 7415 bytes --]

Hi Paolo,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]
[also build test WARNING on v5.4-rc7 next-20191115]
[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/Paolo-Abeni/net-introduce-and-use-route-hint/20191116-172108
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 20021578ba226bda1f0ddf50e4d4a12ea1c6c6c1
config: i386-randconfig-h003-20191117 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/export.h:42:0,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    from include/linux/uio.h:8,
                    from include/linux/socket.h:8,
                    from net/ipv6/ip6_input.c:20:
   net/ipv6/ip6_input.c: In function 'ip6_list_rcv_finish':
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                                ^~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~
   net/ipv6/ip6_input.c:124:18: error: 'struct netns_ipv6' has no member named 'fib6_has_custom_rules'
       if (!net->ipv6.fib6_has_custom_rules) {
                     ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
>> net/ipv6/ip6_input.c:124:4: note: in expansion of macro 'if'
       if (!net->ipv6.fib6_has_custom_rules) {
       ^~

vim +/if +124 net/ipv6/ip6_input.c

  > 20	#include <linux/socket.h>
    21	#include <linux/sockios.h>
    22	#include <linux/net.h>
    23	#include <linux/netdevice.h>
    24	#include <linux/in6.h>
    25	#include <linux/icmpv6.h>
    26	#include <linux/mroute6.h>
    27	#include <linux/slab.h>
    28	#include <linux/indirect_call_wrapper.h>
    29	
    30	#include <linux/netfilter.h>
    31	#include <linux/netfilter_ipv6.h>
    32	
    33	#include <net/sock.h>
    34	#include <net/snmp.h>
    35	
    36	#include <net/ipv6.h>
    37	#include <net/protocol.h>
    38	#include <net/transp_v6.h>
    39	#include <net/rawv6.h>
    40	#include <net/ndisc.h>
    41	#include <net/ip6_route.h>
    42	#include <net/addrconf.h>
    43	#include <net/xfrm.h>
    44	#include <net/inet_ecn.h>
    45	#include <net/dst_metadata.h>
    46	
    47	struct ip6_route_input_hint {
    48		unsigned long	refdst;
    49		struct in6_addr daddr;
    50	};
    51	
    52	INDIRECT_CALLABLE_DECLARE(void udp_v6_early_demux(struct sk_buff *));
    53	INDIRECT_CALLABLE_DECLARE(void tcp_v6_early_demux(struct sk_buff *));
    54	static void ip6_rcv_finish_core(struct net *net, struct sock *sk,
    55					struct sk_buff *skb,
    56					struct ip6_route_input_hint *hint)
    57	{
    58		void (*edemux)(struct sk_buff *skb);
    59	
    60		if (net->ipv4.sysctl_ip_early_demux && !skb_dst(skb) && skb->sk == NULL) {
    61			const struct inet6_protocol *ipprot;
    62	
    63			ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]);
    64			if (ipprot && (edemux = READ_ONCE(ipprot->early_demux)))
    65				INDIRECT_CALL_2(edemux, tcp_v6_early_demux,
    66						udp_v6_early_demux, skb);
    67		}
    68	
    69		if (skb_valid_dst(skb))
    70			return;
    71	
    72		if (hint && ipv6_addr_equal(&hint->daddr, &ipv6_hdr(skb)->daddr))
    73			__skb_dst_copy(skb, hint->refdst);
    74		else
    75			ip6_route_input(skb);
    76	}
    77	
    78	int ip6_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
    79	{
    80		/* if ingress device is enslaved to an L3 master device pass the
    81		 * skb to its handler for processing
    82		 */
    83		skb = l3mdev_ip6_rcv(skb);
    84		if (!skb)
    85			return NET_RX_SUCCESS;
    86		ip6_rcv_finish_core(net, sk, skb, NULL);
    87	
    88		return dst_input(skb);
    89	}
    90	
    91	static void ip6_sublist_rcv_finish(struct list_head *head)
    92	{
    93		struct sk_buff *skb, *next;
    94	
    95		list_for_each_entry_safe(skb, next, head, list) {
    96			skb_list_del_init(skb);
    97			dst_input(skb);
    98		}
    99	}
   100	
   101	static void ip6_list_rcv_finish(struct net *net, struct sock *sk,
   102					struct list_head *head)
   103	{
   104		struct ip6_route_input_hint _hint, *hint = NULL;
   105		struct dst_entry *curr_dst = NULL;
   106		struct sk_buff *skb, *next;
   107		struct list_head sublist;
   108	
   109		INIT_LIST_HEAD(&sublist);
   110		list_for_each_entry_safe(skb, next, head, list) {
   111			struct dst_entry *dst;
   112	
   113			skb_list_del_init(skb);
   114			/* if ingress device is enslaved to an L3 master device pass the
   115			 * skb to its handler for processing
   116			 */
   117			skb = l3mdev_ip6_rcv(skb);
   118			if (!skb)
   119				continue;
   120			ip6_rcv_finish_core(net, sk, skb, hint);
   121			dst = skb_dst(skb);
   122			if (curr_dst != dst) {
   123	#ifndef CONFIG_IPV6_SUBTREES
 > 124				if (!net->ipv6.fib6_has_custom_rules) {
   125					_hint.refdst = skb->_skb_refdst;
   126					memcpy(&_hint.daddr, &ipv6_hdr(skb)->daddr,
   127					       sizeof(_hint.daddr));
   128					hint = &_hint;
   129				}
   130	#endif
   131	
   132				/* dispatch old sublist */
   133				if (!list_empty(&sublist))
   134					ip6_sublist_rcv_finish(&sublist);
   135				/* start new sublist */
   136				INIT_LIST_HEAD(&sublist);
   137				curr_dst = dst;
   138			}
   139			list_add_tail(&skb->list, &sublist);
   140		}
   141		/* dispatch final sublist */
   142		ip6_sublist_rcv_finish(&sublist);
   143	}
   144	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31708 bytes --]

  parent reply	other threads:[~2019-11-17 11:48 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-16  9:14 [PATCH net-next 0/2] net: introduce and use route hint Paolo Abeni
2019-11-16  9:14 ` [PATCH net-next 1/2] ipv6: introduce and uses route look hints for list input Paolo Abeni
2019-11-16 11:04   ` kbuild test robot
2019-11-16 11:04     ` kbuild test robot
2019-11-17 11:46   ` kbuild test robot [this message]
2019-11-17 11:46     ` kbuild test robot
2019-11-16  9:14 ` [PATCH net-next 2/2] ipv4: use dst hint for ipv4 list receive Paolo Abeni
2019-11-16 10:56   ` kbuild test robot
2019-11-16 10:56     ` kbuild test robot
2019-11-17  8:58   ` kbuild test robot
2019-11-17  8:58     ` kbuild test robot
2019-11-18 16:15   ` Edward Cree
2019-11-18 16:44     ` Paolo Abeni
2019-11-18 17:14       ` Paolo Abeni
2019-11-16 20:09 ` [PATCH net-next 0/2] net: introduce and use route hint David Miller
2019-11-18  8:12   ` Paolo Abeni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201911171912.pVIJyAXV%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=davem@davemloft.net \
    --cc=ecree@solarflare.com \
    --cc=kbuild-all@lists.01.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=willemdebruijn.kernel@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.