All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH nf-next] netfilter: conntrack: pptp: use single option structure
@ 2022-01-20 15:09 Florian Westphal
  0 siblings, 0 replies; 5+ messages in thread
From: Florian Westphal @ 2022-01-20 15:09 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Florian Westphal

Instead of exposing the four hooks individually use a sinle hook ops
structure.

Signed-off-by: Florian Westphal <fw@strlen.de>
---
 include/linux/netfilter/nf_conntrack_pptp.h | 38 ++++++-------
 net/ipv4/netfilter/nf_nat_pptp.c            | 24 ++++-----
 net/netfilter/nf_conntrack_pptp.c           | 60 +++++++--------------
 3 files changed, 45 insertions(+), 77 deletions(-)

diff --git a/include/linux/netfilter/nf_conntrack_pptp.h b/include/linux/netfilter/nf_conntrack_pptp.h
index a28aa289afdc..c3bdb4370938 100644
--- a/include/linux/netfilter/nf_conntrack_pptp.h
+++ b/include/linux/netfilter/nf_conntrack_pptp.h
@@ -300,26 +300,22 @@ union pptp_ctrl_union {
 	struct PptpSetLinkInfo		setlink;
 };
 
-extern int
-(*nf_nat_pptp_hook_outbound)(struct sk_buff *skb,
-			     struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			     unsigned int protoff,
-			     struct PptpControlHeader *ctlh,
-			     union pptp_ctrl_union *pptpReq);
-
-extern int
-(*nf_nat_pptp_hook_inbound)(struct sk_buff *skb,
-			    struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			    unsigned int protoff,
-			    struct PptpControlHeader *ctlh,
-			    union pptp_ctrl_union *pptpReq);
-
-extern void
-(*nf_nat_pptp_hook_exp_gre)(struct nf_conntrack_expect *exp_orig,
-			    struct nf_conntrack_expect *exp_reply);
-
-extern void
-(*nf_nat_pptp_hook_expectfn)(struct nf_conn *ct,
-			     struct nf_conntrack_expect *exp);
+struct nf_nat_pptp_hook {
+	int (*outbound)(struct sk_buff *skb,
+			struct nf_conn *ct, enum ip_conntrack_info ctinfo,
+			unsigned int protoff,
+			struct PptpControlHeader *ctlh,
+			union pptp_ctrl_union *pptpReq);
+	int (*inbound)(struct sk_buff *skb,
+		       struct nf_conn *ct, enum ip_conntrack_info ctinfo,
+		       unsigned int protoff,
+		       struct PptpControlHeader *ctlh,
+		       union pptp_ctrl_union *pptpReq);
+	void (*exp_gre)(struct nf_conntrack_expect *exp_orig,
+			struct nf_conntrack_expect *exp_reply);
+	void (*expectfn)(struct nf_conn *ct,
+			 struct nf_conntrack_expect *exp);
+};
 
+extern const struct nf_nat_pptp_hook __rcu *nf_nat_pptp_hook;
 #endif /* _NF_CONNTRACK_PPTP_H */
diff --git a/net/ipv4/netfilter/nf_nat_pptp.c b/net/ipv4/netfilter/nf_nat_pptp.c
index 3f248a19faa3..fab357cc8559 100644
--- a/net/ipv4/netfilter/nf_nat_pptp.c
+++ b/net/ipv4/netfilter/nf_nat_pptp.c
@@ -295,28 +295,24 @@ pptp_inbound_pkt(struct sk_buff *skb,
 	return NF_ACCEPT;
 }
 
+static const struct nf_nat_pptp_hook pptp_hooks = {
+	.outbound = pptp_outbound_pkt,
+	.inbound = pptp_inbound_pkt,
+	.exp_gre = pptp_exp_gre,
+	.expectfn = pptp_nat_expected,
+};
+
 static int __init nf_nat_helper_pptp_init(void)
 {
-	BUG_ON(nf_nat_pptp_hook_outbound != NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_outbound, pptp_outbound_pkt);
-
-	BUG_ON(nf_nat_pptp_hook_inbound != NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_inbound, pptp_inbound_pkt);
-
-	BUG_ON(nf_nat_pptp_hook_exp_gre != NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_exp_gre, pptp_exp_gre);
+	WARN_ON(nf_nat_pptp_hook != NULL);
+	RCU_INIT_POINTER(nf_nat_pptp_hook, &pptp_hooks);
 
-	BUG_ON(nf_nat_pptp_hook_expectfn != NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, pptp_nat_expected);
 	return 0;
 }
 
 static void __exit nf_nat_helper_pptp_fini(void)
 {
-	RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_exp_gre, NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_inbound, NULL);
-	RCU_INIT_POINTER(nf_nat_pptp_hook_outbound, NULL);
+	RCU_INIT_POINTER(nf_nat_pptp_hook, NULL);
 	synchronize_rcu();
 }
 
diff --git a/net/netfilter/nf_conntrack_pptp.c b/net/netfilter/nf_conntrack_pptp.c
index 7d5708b92138..f3fa367b455f 100644
--- a/net/netfilter/nf_conntrack_pptp.c
+++ b/net/netfilter/nf_conntrack_pptp.c
@@ -45,30 +45,8 @@ MODULE_ALIAS_NFCT_HELPER("pptp");
 
 static DEFINE_SPINLOCK(nf_pptp_lock);
 
-int
-(*nf_nat_pptp_hook_outbound)(struct sk_buff *skb,
-			     struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			     unsigned int protoff, struct PptpControlHeader *ctlh,
-			     union pptp_ctrl_union *pptpReq) __read_mostly;
-EXPORT_SYMBOL_GPL(nf_nat_pptp_hook_outbound);
-
-int
-(*nf_nat_pptp_hook_inbound)(struct sk_buff *skb,
-			    struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			    unsigned int protoff, struct PptpControlHeader *ctlh,
-			    union pptp_ctrl_union *pptpReq) __read_mostly;
-EXPORT_SYMBOL_GPL(nf_nat_pptp_hook_inbound);
-
-void
-(*nf_nat_pptp_hook_exp_gre)(struct nf_conntrack_expect *expect_orig,
-			    struct nf_conntrack_expect *expect_reply)
-			    __read_mostly;
-EXPORT_SYMBOL_GPL(nf_nat_pptp_hook_exp_gre);
-
-void
-(*nf_nat_pptp_hook_expectfn)(struct nf_conn *ct,
-			     struct nf_conntrack_expect *exp) __read_mostly;
-EXPORT_SYMBOL_GPL(nf_nat_pptp_hook_expectfn);
+const struct nf_nat_pptp_hook *nf_nat_pptp_hook;
+EXPORT_SYMBOL_GPL(nf_nat_pptp_hook);
 
 #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
 /* PptpControlMessageType names */
@@ -111,8 +89,8 @@ EXPORT_SYMBOL(pptp_msg_name);
 static void pptp_expectfn(struct nf_conn *ct,
 			 struct nf_conntrack_expect *exp)
 {
+	const struct nf_nat_pptp_hook *hook;
 	struct net *net = nf_ct_net(ct);
-	typeof(nf_nat_pptp_hook_expectfn) nf_nat_pptp_expectfn;
 	pr_debug("increasing timeouts\n");
 
 	/* increase timeout of GRE data channel conntrack entry */
@@ -122,9 +100,9 @@ static void pptp_expectfn(struct nf_conn *ct,
 	/* Can you see how rusty this code is, compared with the pre-2.6.11
 	 * one? That's what happened to my shiny newnat of 2002 ;( -HW */
 
-	nf_nat_pptp_expectfn = rcu_dereference(nf_nat_pptp_hook_expectfn);
-	if (nf_nat_pptp_expectfn && ct->master->status & IPS_NAT_MASK)
-		nf_nat_pptp_expectfn(ct, exp);
+	hook = rcu_dereference(nf_nat_pptp_hook);
+	if (hook && ct->master->status & IPS_NAT_MASK)
+		hook->expectfn(ct, exp);
 	else {
 		struct nf_conntrack_tuple inv_t;
 		struct nf_conntrack_expect *exp_other;
@@ -209,9 +187,9 @@ static void pptp_destroy_siblings(struct nf_conn *ct)
 static int exp_gre(struct nf_conn *ct, __be16 callid, __be16 peer_callid)
 {
 	struct nf_conntrack_expect *exp_orig, *exp_reply;
+	const struct nf_nat_pptp_hook *hook;
 	enum ip_conntrack_dir dir;
 	int ret = 1;
-	typeof(nf_nat_pptp_hook_exp_gre) nf_nat_pptp_exp_gre;
 
 	exp_orig = nf_ct_expect_alloc(ct);
 	if (exp_orig == NULL)
@@ -239,9 +217,9 @@ static int exp_gre(struct nf_conn *ct, __be16 callid, __be16 peer_callid)
 			  IPPROTO_GRE, &callid, &peer_callid);
 	exp_reply->expectfn = pptp_expectfn;
 
-	nf_nat_pptp_exp_gre = rcu_dereference(nf_nat_pptp_hook_exp_gre);
-	if (nf_nat_pptp_exp_gre && ct->status & IPS_NAT_MASK)
-		nf_nat_pptp_exp_gre(exp_orig, exp_reply);
+	hook = rcu_dereference(nf_nat_pptp_hook);
+	if (hook && ct->status & IPS_NAT_MASK)
+		hook->exp_gre(exp_orig, exp_reply);
 	if (nf_ct_expect_related(exp_orig, 0) != 0)
 		goto out_put_both;
 	if (nf_ct_expect_related(exp_reply, 0) != 0)
@@ -279,9 +257,9 @@ pptp_inbound_pkt(struct sk_buff *skb, unsigned int protoff,
 		 enum ip_conntrack_info ctinfo)
 {
 	struct nf_ct_pptp_master *info = nfct_help_data(ct);
+	const struct nf_nat_pptp_hook *hook;
 	u_int16_t msg;
 	__be16 cid = 0, pcid = 0;
-	typeof(nf_nat_pptp_hook_inbound) nf_nat_pptp_inbound;
 
 	msg = ntohs(ctlh->messageType);
 	pr_debug("inbound control message %s\n", pptp_msg_name(msg));
@@ -383,10 +361,9 @@ pptp_inbound_pkt(struct sk_buff *skb, unsigned int protoff,
 		goto invalid;
 	}
 
-	nf_nat_pptp_inbound = rcu_dereference(nf_nat_pptp_hook_inbound);
-	if (nf_nat_pptp_inbound && ct->status & IPS_NAT_MASK)
-		return nf_nat_pptp_inbound(skb, ct, ctinfo,
-					   protoff, ctlh, pptpReq);
+	hook = rcu_dereference(nf_nat_pptp_hook);
+	if (hook && ct->status & IPS_NAT_MASK)
+		return hook->inbound(skb, ct, ctinfo, protoff, ctlh, pptpReq);
 	return NF_ACCEPT;
 
 invalid:
@@ -407,9 +384,9 @@ pptp_outbound_pkt(struct sk_buff *skb, unsigned int protoff,
 		  enum ip_conntrack_info ctinfo)
 {
 	struct nf_ct_pptp_master *info = nfct_help_data(ct);
+	const struct nf_nat_pptp_hook *hook;
 	u_int16_t msg;
 	__be16 cid = 0, pcid = 0;
-	typeof(nf_nat_pptp_hook_outbound) nf_nat_pptp_outbound;
 
 	msg = ntohs(ctlh->messageType);
 	pr_debug("outbound control message %s\n", pptp_msg_name(msg));
@@ -479,10 +456,9 @@ pptp_outbound_pkt(struct sk_buff *skb, unsigned int protoff,
 		goto invalid;
 	}
 
-	nf_nat_pptp_outbound = rcu_dereference(nf_nat_pptp_hook_outbound);
-	if (nf_nat_pptp_outbound && ct->status & IPS_NAT_MASK)
-		return nf_nat_pptp_outbound(skb, ct, ctinfo,
-					    protoff, ctlh, pptpReq);
+	hook = rcu_dereference(nf_nat_pptp_hook);
+	if (hook && ct->status & IPS_NAT_MASK)
+		return hook->outbound(skb, ct, ctinfo, protoff, ctlh, pptpReq);
 	return NF_ACCEPT;
 
 invalid:
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH nf-next] netfilter: conntrack: pptp: use single option structure
@ 2022-01-21  3:10 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-21  3:10 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220120150913.8719-1-fw@strlen.de>
References: <20220120150913.8719-1-fw@strlen.de>
TO: Florian Westphal <fw@strlen.de>
TO: netfilter-devel(a)vger.kernel.org
CC: Florian Westphal <fw@strlen.de>

Hi Florian,

I love your patch! Perhaps something to improve:

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

url:    https://github.com/0day-ci/linux/commits/Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220121/202201211119.uNz9yzDZ-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/ffa8a2dcecaa350f84e5747750956010d5514ab2
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
        git checkout ffa8a2dcecaa350f84e5747750956010d5514ab2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   net/netfilter/nf_conntrack_pptp.c:48:31: sparse: sparse: symbol 'nf_nat_pptp_hook' redeclared with different type (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:48:31: sparse:    struct nf_nat_pptp_hook const *[addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c: note: in included file:
   include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse: note: previously declared as:
>> include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *extern [addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c:103:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const *

vim +48 net/netfilter/nf_conntrack_pptp.c

f09943fefe6b70 Patrick McHardy   2006-12-02   47  
ffa8a2dcecaa35 Florian Westphal  2022-01-20  @48  const struct nf_nat_pptp_hook *nf_nat_pptp_hook;
ffa8a2dcecaa35 Florian Westphal  2022-01-20   49  EXPORT_SYMBOL_GPL(nf_nat_pptp_hook);
f09943fefe6b70 Patrick McHardy   2006-12-02   50  
e9d376f0fa66bd Jason Baron       2009-02-05   51  #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
f09943fefe6b70 Patrick McHardy   2006-12-02   52  /* PptpControlMessageType names */
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   53  static const char *const pptp_msg_name_array[PPTP_MSG_MAX + 1] = {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   54  	[0]				= "UNKNOWN_MESSAGE",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   55  	[PPTP_START_SESSION_REQUEST]	= "START_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   56  	[PPTP_START_SESSION_REPLY]	= "START_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   57  	[PPTP_STOP_SESSION_REQUEST]	= "STOP_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   58  	[PPTP_STOP_SESSION_REPLY]	= "STOP_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   59  	[PPTP_ECHO_REQUEST]		= "ECHO_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   60  	[PPTP_ECHO_REPLY]		= "ECHO_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   61  	[PPTP_OUT_CALL_REQUEST]		= "OUT_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   62  	[PPTP_OUT_CALL_REPLY]		= "OUT_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   63  	[PPTP_IN_CALL_REQUEST]		= "IN_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   64  	[PPTP_IN_CALL_REPLY]		= "IN_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   65  	[PPTP_IN_CALL_CONNECT]		= "IN_CALL_CONNECT",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   66  	[PPTP_CALL_CLEAR_REQUEST]	= "CALL_CLEAR_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   67  	[PPTP_CALL_DISCONNECT_NOTIFY]	= "CALL_DISCONNECT_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   68  	[PPTP_WAN_ERROR_NOTIFY]		= "WAN_ERROR_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   69  	[PPTP_SET_LINK_INFO]		= "SET_LINK_INFO"
f09943fefe6b70 Patrick McHardy   2006-12-02   70  };
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   71  
4946ea5c123703 Pablo Neira Ayuso 2020-05-27   72  const char *pptp_msg_name(u_int16_t msg)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   73  {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   74  	if (msg > PPTP_MSG_MAX)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   75  		return pptp_msg_name_array[0];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   76  
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   77  	return pptp_msg_name_array[msg];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   78  }
f09943fefe6b70 Patrick McHardy   2006-12-02   79  EXPORT_SYMBOL(pptp_msg_name);
f09943fefe6b70 Patrick McHardy   2006-12-02   80  #endif
f09943fefe6b70 Patrick McHardy   2006-12-02   81  
f09943fefe6b70 Patrick McHardy   2006-12-02   82  #define SECS *HZ
f09943fefe6b70 Patrick McHardy   2006-12-02   83  #define MINS * 60 SECS
f09943fefe6b70 Patrick McHardy   2006-12-02   84  #define HOURS * 60 MINS
f09943fefe6b70 Patrick McHardy   2006-12-02   85  
f09943fefe6b70 Patrick McHardy   2006-12-02   86  #define PPTP_GRE_TIMEOUT 		(10 MINS)
f09943fefe6b70 Patrick McHardy   2006-12-02   87  #define PPTP_GRE_STREAM_TIMEOUT 	(5 HOURS)
f09943fefe6b70 Patrick McHardy   2006-12-02   88  
f09943fefe6b70 Patrick McHardy   2006-12-02   89  static void pptp_expectfn(struct nf_conn *ct,
f09943fefe6b70 Patrick McHardy   2006-12-02   90  			 struct nf_conntrack_expect *exp)
f09943fefe6b70 Patrick McHardy   2006-12-02   91  {
ffa8a2dcecaa35 Florian Westphal  2022-01-20   92  	const struct nf_nat_pptp_hook *hook;
0e6e75af921d1f Alexey Dobriyan   2008-10-08   93  	struct net *net = nf_ct_net(ct);
0d53778e81ac7a Patrick McHardy   2007-07-07   94  	pr_debug("increasing timeouts\n");
f09943fefe6b70 Patrick McHardy   2006-12-02   95  
f09943fefe6b70 Patrick McHardy   2006-12-02   96  	/* increase timeout of GRE data channel conntrack entry */
f09943fefe6b70 Patrick McHardy   2006-12-02   97  	ct->proto.gre.timeout	     = PPTP_GRE_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   98  	ct->proto.gre.stream_timeout = PPTP_GRE_STREAM_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   99  
f09943fefe6b70 Patrick McHardy   2006-12-02  100  	/* Can you see how rusty this code is, compared with the pre-2.6.11
f09943fefe6b70 Patrick McHardy   2006-12-02  101  	 * one? That's what happened to my shiny newnat of 2002 ;( -HW */
f09943fefe6b70 Patrick McHardy   2006-12-02  102  
ffa8a2dcecaa35 Florian Westphal  2022-01-20 @103  	hook = rcu_dereference(nf_nat_pptp_hook);
ffa8a2dcecaa35 Florian Westphal  2022-01-20  104  	if (hook && ct->master->status & IPS_NAT_MASK)
ffa8a2dcecaa35 Florian Westphal  2022-01-20  105  		hook->expectfn(ct, exp);
f09943fefe6b70 Patrick McHardy   2006-12-02  106  	else {
f09943fefe6b70 Patrick McHardy   2006-12-02  107  		struct nf_conntrack_tuple inv_t;
f09943fefe6b70 Patrick McHardy   2006-12-02  108  		struct nf_conntrack_expect *exp_other;
f09943fefe6b70 Patrick McHardy   2006-12-02  109  
f09943fefe6b70 Patrick McHardy   2006-12-02  110  		/* obviously this tuple inversion only works until you do NAT */
303e0c5589592e Florian Westphal  2019-01-15  111  		nf_ct_invert_tuple(&inv_t, &exp->tuple);
0d53778e81ac7a Patrick McHardy   2007-07-07  112  		pr_debug("trying to unexpect other dir: ");
3c9fba656a185c Jan Engelhardt    2008-04-14  113  		nf_ct_dump_tuple(&inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  114  
5d0aa2ccd4699a Patrick McHardy   2010-02-15  115  		exp_other = nf_ct_expect_find_get(net, nf_ct_zone(ct), &inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  116  		if (exp_other) {
f09943fefe6b70 Patrick McHardy   2006-12-02  117  			/* delete other expectation.  */
0d53778e81ac7a Patrick McHardy   2007-07-07  118  			pr_debug("found\n");
6823645d608541 Patrick McHardy   2007-07-07  119  			nf_ct_unexpect_related(exp_other);
6823645d608541 Patrick McHardy   2007-07-07  120  			nf_ct_expect_put(exp_other);
f09943fefe6b70 Patrick McHardy   2006-12-02  121  		} else {
0d53778e81ac7a Patrick McHardy   2007-07-07  122  			pr_debug("not found\n");
f09943fefe6b70 Patrick McHardy   2006-12-02  123  		}
f09943fefe6b70 Patrick McHardy   2006-12-02  124  	}
f09943fefe6b70 Patrick McHardy   2006-12-02  125  }
f09943fefe6b70 Patrick McHardy   2006-12-02  126  

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH nf-next] netfilter: conntrack: pptp: use single option structure
@ 2022-01-25 10:43 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-25 10:43 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220120150913.8719-1-fw@strlen.de>
References: <20220120150913.8719-1-fw@strlen.de>
TO: Florian Westphal <fw@strlen.de>
TO: netfilter-devel(a)vger.kernel.org
CC: Florian Westphal <fw@strlen.de>

Hi Florian,

I love your patch! Perhaps something to improve:

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

url:    https://github.com/0day-ci/linux/commits/Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220125/202201251811.PdPnjAPm-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/ffa8a2dcecaa350f84e5747750956010d5514ab2
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
        git checkout ffa8a2dcecaa350f84e5747750956010d5514ab2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   net/netfilter/nf_conntrack_pptp.c:48:31: sparse: sparse: symbol 'nf_nat_pptp_hook' redeclared with different type (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:48:31: sparse:    struct nf_nat_pptp_hook const *[addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c: note: in included file:
   include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse: note: previously declared as:
>> include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *extern [addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c:103:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const *

vim +48 net/netfilter/nf_conntrack_pptp.c

f09943fefe6b70 Patrick McHardy   2006-12-02   47  
ffa8a2dcecaa35 Florian Westphal  2022-01-20  @48  const struct nf_nat_pptp_hook *nf_nat_pptp_hook;
ffa8a2dcecaa35 Florian Westphal  2022-01-20   49  EXPORT_SYMBOL_GPL(nf_nat_pptp_hook);
f09943fefe6b70 Patrick McHardy   2006-12-02   50  
e9d376f0fa66bd Jason Baron       2009-02-05   51  #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
f09943fefe6b70 Patrick McHardy   2006-12-02   52  /* PptpControlMessageType names */
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   53  static const char *const pptp_msg_name_array[PPTP_MSG_MAX + 1] = {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   54  	[0]				= "UNKNOWN_MESSAGE",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   55  	[PPTP_START_SESSION_REQUEST]	= "START_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   56  	[PPTP_START_SESSION_REPLY]	= "START_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   57  	[PPTP_STOP_SESSION_REQUEST]	= "STOP_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   58  	[PPTP_STOP_SESSION_REPLY]	= "STOP_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   59  	[PPTP_ECHO_REQUEST]		= "ECHO_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   60  	[PPTP_ECHO_REPLY]		= "ECHO_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   61  	[PPTP_OUT_CALL_REQUEST]		= "OUT_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   62  	[PPTP_OUT_CALL_REPLY]		= "OUT_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   63  	[PPTP_IN_CALL_REQUEST]		= "IN_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   64  	[PPTP_IN_CALL_REPLY]		= "IN_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   65  	[PPTP_IN_CALL_CONNECT]		= "IN_CALL_CONNECT",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   66  	[PPTP_CALL_CLEAR_REQUEST]	= "CALL_CLEAR_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   67  	[PPTP_CALL_DISCONNECT_NOTIFY]	= "CALL_DISCONNECT_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   68  	[PPTP_WAN_ERROR_NOTIFY]		= "WAN_ERROR_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   69  	[PPTP_SET_LINK_INFO]		= "SET_LINK_INFO"
f09943fefe6b70 Patrick McHardy   2006-12-02   70  };
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   71  
4946ea5c123703 Pablo Neira Ayuso 2020-05-27   72  const char *pptp_msg_name(u_int16_t msg)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   73  {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   74  	if (msg > PPTP_MSG_MAX)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   75  		return pptp_msg_name_array[0];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   76  
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   77  	return pptp_msg_name_array[msg];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   78  }
f09943fefe6b70 Patrick McHardy   2006-12-02   79  EXPORT_SYMBOL(pptp_msg_name);
f09943fefe6b70 Patrick McHardy   2006-12-02   80  #endif
f09943fefe6b70 Patrick McHardy   2006-12-02   81  
f09943fefe6b70 Patrick McHardy   2006-12-02   82  #define SECS *HZ
f09943fefe6b70 Patrick McHardy   2006-12-02   83  #define MINS * 60 SECS
f09943fefe6b70 Patrick McHardy   2006-12-02   84  #define HOURS * 60 MINS
f09943fefe6b70 Patrick McHardy   2006-12-02   85  
f09943fefe6b70 Patrick McHardy   2006-12-02   86  #define PPTP_GRE_TIMEOUT 		(10 MINS)
f09943fefe6b70 Patrick McHardy   2006-12-02   87  #define PPTP_GRE_STREAM_TIMEOUT 	(5 HOURS)
f09943fefe6b70 Patrick McHardy   2006-12-02   88  
f09943fefe6b70 Patrick McHardy   2006-12-02   89  static void pptp_expectfn(struct nf_conn *ct,
f09943fefe6b70 Patrick McHardy   2006-12-02   90  			 struct nf_conntrack_expect *exp)
f09943fefe6b70 Patrick McHardy   2006-12-02   91  {
ffa8a2dcecaa35 Florian Westphal  2022-01-20   92  	const struct nf_nat_pptp_hook *hook;
0e6e75af921d1f Alexey Dobriyan   2008-10-08   93  	struct net *net = nf_ct_net(ct);
0d53778e81ac7a Patrick McHardy   2007-07-07   94  	pr_debug("increasing timeouts\n");
f09943fefe6b70 Patrick McHardy   2006-12-02   95  
f09943fefe6b70 Patrick McHardy   2006-12-02   96  	/* increase timeout of GRE data channel conntrack entry */
f09943fefe6b70 Patrick McHardy   2006-12-02   97  	ct->proto.gre.timeout	     = PPTP_GRE_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   98  	ct->proto.gre.stream_timeout = PPTP_GRE_STREAM_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   99  
f09943fefe6b70 Patrick McHardy   2006-12-02  100  	/* Can you see how rusty this code is, compared with the pre-2.6.11
f09943fefe6b70 Patrick McHardy   2006-12-02  101  	 * one? That's what happened to my shiny newnat of 2002 ;( -HW */
f09943fefe6b70 Patrick McHardy   2006-12-02  102  
ffa8a2dcecaa35 Florian Westphal  2022-01-20 @103  	hook = rcu_dereference(nf_nat_pptp_hook);
ffa8a2dcecaa35 Florian Westphal  2022-01-20  104  	if (hook && ct->master->status & IPS_NAT_MASK)
ffa8a2dcecaa35 Florian Westphal  2022-01-20  105  		hook->expectfn(ct, exp);
f09943fefe6b70 Patrick McHardy   2006-12-02  106  	else {
f09943fefe6b70 Patrick McHardy   2006-12-02  107  		struct nf_conntrack_tuple inv_t;
f09943fefe6b70 Patrick McHardy   2006-12-02  108  		struct nf_conntrack_expect *exp_other;
f09943fefe6b70 Patrick McHardy   2006-12-02  109  
f09943fefe6b70 Patrick McHardy   2006-12-02  110  		/* obviously this tuple inversion only works until you do NAT */
303e0c5589592e Florian Westphal  2019-01-15  111  		nf_ct_invert_tuple(&inv_t, &exp->tuple);
0d53778e81ac7a Patrick McHardy   2007-07-07  112  		pr_debug("trying to unexpect other dir: ");
3c9fba656a185c Jan Engelhardt    2008-04-14  113  		nf_ct_dump_tuple(&inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  114  
5d0aa2ccd4699a Patrick McHardy   2010-02-15  115  		exp_other = nf_ct_expect_find_get(net, nf_ct_zone(ct), &inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  116  		if (exp_other) {
f09943fefe6b70 Patrick McHardy   2006-12-02  117  			/* delete other expectation.  */
0d53778e81ac7a Patrick McHardy   2007-07-07  118  			pr_debug("found\n");
6823645d608541 Patrick McHardy   2007-07-07  119  			nf_ct_unexpect_related(exp_other);
6823645d608541 Patrick McHardy   2007-07-07  120  			nf_ct_expect_put(exp_other);
f09943fefe6b70 Patrick McHardy   2006-12-02  121  		} else {
0d53778e81ac7a Patrick McHardy   2007-07-07  122  			pr_debug("not found\n");
f09943fefe6b70 Patrick McHardy   2006-12-02  123  		}
f09943fefe6b70 Patrick McHardy   2006-12-02  124  	}
f09943fefe6b70 Patrick McHardy   2006-12-02  125  }
f09943fefe6b70 Patrick McHardy   2006-12-02  126  

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH nf-next] netfilter: conntrack: pptp: use single option structure
@ 2022-02-07 10:01 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-02-07 10:01 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220120150913.8719-1-fw@strlen.de>
References: <20220120150913.8719-1-fw@strlen.de>
TO: Florian Westphal <fw@strlen.de>

Hi Florian,

I love your patch! Perhaps something to improve:

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

url:    https://github.com/0day-ci/linux/commits/Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220207/202202071734.MhUN0ouB-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/ffa8a2dcecaa350f84e5747750956010d5514ab2
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
        git checkout ffa8a2dcecaa350f84e5747750956010d5514ab2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   net/netfilter/nf_conntrack_pptp.c:48:31: sparse: sparse: symbol 'nf_nat_pptp_hook' redeclared with different type (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:48:31: sparse:    struct nf_nat_pptp_hook const *[addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c: note: in included file:
   include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse: note: previously declared as:
>> include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *extern [addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c:103:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const *

vim +48 net/netfilter/nf_conntrack_pptp.c

f09943fefe6b70 Patrick McHardy   2006-12-02   47  
ffa8a2dcecaa35 Florian Westphal  2022-01-20  @48  const struct nf_nat_pptp_hook *nf_nat_pptp_hook;
ffa8a2dcecaa35 Florian Westphal  2022-01-20   49  EXPORT_SYMBOL_GPL(nf_nat_pptp_hook);
f09943fefe6b70 Patrick McHardy   2006-12-02   50  
e9d376f0fa66bd Jason Baron       2009-02-05   51  #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
f09943fefe6b70 Patrick McHardy   2006-12-02   52  /* PptpControlMessageType names */
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   53  static const char *const pptp_msg_name_array[PPTP_MSG_MAX + 1] = {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   54  	[0]				= "UNKNOWN_MESSAGE",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   55  	[PPTP_START_SESSION_REQUEST]	= "START_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   56  	[PPTP_START_SESSION_REPLY]	= "START_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   57  	[PPTP_STOP_SESSION_REQUEST]	= "STOP_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   58  	[PPTP_STOP_SESSION_REPLY]	= "STOP_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   59  	[PPTP_ECHO_REQUEST]		= "ECHO_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   60  	[PPTP_ECHO_REPLY]		= "ECHO_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   61  	[PPTP_OUT_CALL_REQUEST]		= "OUT_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   62  	[PPTP_OUT_CALL_REPLY]		= "OUT_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   63  	[PPTP_IN_CALL_REQUEST]		= "IN_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   64  	[PPTP_IN_CALL_REPLY]		= "IN_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   65  	[PPTP_IN_CALL_CONNECT]		= "IN_CALL_CONNECT",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   66  	[PPTP_CALL_CLEAR_REQUEST]	= "CALL_CLEAR_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   67  	[PPTP_CALL_DISCONNECT_NOTIFY]	= "CALL_DISCONNECT_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   68  	[PPTP_WAN_ERROR_NOTIFY]		= "WAN_ERROR_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   69  	[PPTP_SET_LINK_INFO]		= "SET_LINK_INFO"
f09943fefe6b70 Patrick McHardy   2006-12-02   70  };
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   71  
4946ea5c123703 Pablo Neira Ayuso 2020-05-27   72  const char *pptp_msg_name(u_int16_t msg)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   73  {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   74  	if (msg > PPTP_MSG_MAX)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   75  		return pptp_msg_name_array[0];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   76  
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   77  	return pptp_msg_name_array[msg];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   78  }
f09943fefe6b70 Patrick McHardy   2006-12-02   79  EXPORT_SYMBOL(pptp_msg_name);
f09943fefe6b70 Patrick McHardy   2006-12-02   80  #endif
f09943fefe6b70 Patrick McHardy   2006-12-02   81  
f09943fefe6b70 Patrick McHardy   2006-12-02   82  #define SECS *HZ
f09943fefe6b70 Patrick McHardy   2006-12-02   83  #define MINS * 60 SECS
f09943fefe6b70 Patrick McHardy   2006-12-02   84  #define HOURS * 60 MINS
f09943fefe6b70 Patrick McHardy   2006-12-02   85  
f09943fefe6b70 Patrick McHardy   2006-12-02   86  #define PPTP_GRE_TIMEOUT 		(10 MINS)
f09943fefe6b70 Patrick McHardy   2006-12-02   87  #define PPTP_GRE_STREAM_TIMEOUT 	(5 HOURS)
f09943fefe6b70 Patrick McHardy   2006-12-02   88  
f09943fefe6b70 Patrick McHardy   2006-12-02   89  static void pptp_expectfn(struct nf_conn *ct,
f09943fefe6b70 Patrick McHardy   2006-12-02   90  			 struct nf_conntrack_expect *exp)
f09943fefe6b70 Patrick McHardy   2006-12-02   91  {
ffa8a2dcecaa35 Florian Westphal  2022-01-20   92  	const struct nf_nat_pptp_hook *hook;
0e6e75af921d1f Alexey Dobriyan   2008-10-08   93  	struct net *net = nf_ct_net(ct);
0d53778e81ac7a Patrick McHardy   2007-07-07   94  	pr_debug("increasing timeouts\n");
f09943fefe6b70 Patrick McHardy   2006-12-02   95  
f09943fefe6b70 Patrick McHardy   2006-12-02   96  	/* increase timeout of GRE data channel conntrack entry */
f09943fefe6b70 Patrick McHardy   2006-12-02   97  	ct->proto.gre.timeout	     = PPTP_GRE_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   98  	ct->proto.gre.stream_timeout = PPTP_GRE_STREAM_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   99  
f09943fefe6b70 Patrick McHardy   2006-12-02  100  	/* Can you see how rusty this code is, compared with the pre-2.6.11
f09943fefe6b70 Patrick McHardy   2006-12-02  101  	 * one? That's what happened to my shiny newnat of 2002 ;( -HW */
f09943fefe6b70 Patrick McHardy   2006-12-02  102  
ffa8a2dcecaa35 Florian Westphal  2022-01-20 @103  	hook = rcu_dereference(nf_nat_pptp_hook);
ffa8a2dcecaa35 Florian Westphal  2022-01-20  104  	if (hook && ct->master->status & IPS_NAT_MASK)
ffa8a2dcecaa35 Florian Westphal  2022-01-20  105  		hook->expectfn(ct, exp);
f09943fefe6b70 Patrick McHardy   2006-12-02  106  	else {
f09943fefe6b70 Patrick McHardy   2006-12-02  107  		struct nf_conntrack_tuple inv_t;
f09943fefe6b70 Patrick McHardy   2006-12-02  108  		struct nf_conntrack_expect *exp_other;
f09943fefe6b70 Patrick McHardy   2006-12-02  109  
f09943fefe6b70 Patrick McHardy   2006-12-02  110  		/* obviously this tuple inversion only works until you do NAT */
303e0c5589592e Florian Westphal  2019-01-15  111  		nf_ct_invert_tuple(&inv_t, &exp->tuple);
0d53778e81ac7a Patrick McHardy   2007-07-07  112  		pr_debug("trying to unexpect other dir: ");
3c9fba656a185c Jan Engelhardt    2008-04-14  113  		nf_ct_dump_tuple(&inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  114  
5d0aa2ccd4699a Patrick McHardy   2010-02-15  115  		exp_other = nf_ct_expect_find_get(net, nf_ct_zone(ct), &inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  116  		if (exp_other) {
f09943fefe6b70 Patrick McHardy   2006-12-02  117  			/* delete other expectation.  */
0d53778e81ac7a Patrick McHardy   2007-07-07  118  			pr_debug("found\n");
6823645d608541 Patrick McHardy   2007-07-07  119  			nf_ct_unexpect_related(exp_other);
6823645d608541 Patrick McHardy   2007-07-07  120  			nf_ct_expect_put(exp_other);
f09943fefe6b70 Patrick McHardy   2006-12-02  121  		} else {
0d53778e81ac7a Patrick McHardy   2007-07-07  122  			pr_debug("not found\n");
f09943fefe6b70 Patrick McHardy   2006-12-02  123  		}
f09943fefe6b70 Patrick McHardy   2006-12-02  124  	}
f09943fefe6b70 Patrick McHardy   2006-12-02  125  }
f09943fefe6b70 Patrick McHardy   2006-12-02  126  

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH nf-next] netfilter: conntrack: pptp: use single option structure
@ 2022-02-08 15:29 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-02-08 15:29 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220120150913.8719-1-fw@strlen.de>
References: <20220120150913.8719-1-fw@strlen.de>
TO: Florian Westphal <fw@strlen.de>

Hi Florian,

I love your patch! Perhaps something to improve:

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

url:    https://github.com/0day-ci/linux/commits/Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220208/202202082301.DuvjSsUQ-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/ffa8a2dcecaa350f84e5747750956010d5514ab2
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Florian-Westphal/netfilter-conntrack-pptp-use-single-option-structure/20220120-230953
        git checkout ffa8a2dcecaa350f84e5747750956010d5514ab2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   net/netfilter/nf_conntrack_pptp.c:48:31: sparse: sparse: symbol 'nf_nat_pptp_hook' redeclared with different type (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:48:31: sparse:    struct nf_nat_pptp_hook const *[addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c: note: in included file:
   include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse: note: previously declared as:
>> include/linux/netfilter/nf_conntrack_pptp.h:320:44: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *extern [addressable] [toplevel] nf_nat_pptp_hook
   net/netfilter/nf_conntrack_pptp.c:103:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
>> net/netfilter/nf_conntrack_pptp.c:103:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:220:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:364:16: sparse:    struct nf_nat_pptp_hook const *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const [noderef] __rcu *
   net/netfilter/nf_conntrack_pptp.c:459:16: sparse:    struct nf_nat_pptp_hook const *

vim +48 net/netfilter/nf_conntrack_pptp.c

f09943fefe6b70 Patrick McHardy   2006-12-02   47  
ffa8a2dcecaa35 Florian Westphal  2022-01-20  @48  const struct nf_nat_pptp_hook *nf_nat_pptp_hook;
ffa8a2dcecaa35 Florian Westphal  2022-01-20   49  EXPORT_SYMBOL_GPL(nf_nat_pptp_hook);
f09943fefe6b70 Patrick McHardy   2006-12-02   50  
e9d376f0fa66bd Jason Baron       2009-02-05   51  #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
f09943fefe6b70 Patrick McHardy   2006-12-02   52  /* PptpControlMessageType names */
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   53  static const char *const pptp_msg_name_array[PPTP_MSG_MAX + 1] = {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   54  	[0]				= "UNKNOWN_MESSAGE",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   55  	[PPTP_START_SESSION_REQUEST]	= "START_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   56  	[PPTP_START_SESSION_REPLY]	= "START_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   57  	[PPTP_STOP_SESSION_REQUEST]	= "STOP_SESSION_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   58  	[PPTP_STOP_SESSION_REPLY]	= "STOP_SESSION_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   59  	[PPTP_ECHO_REQUEST]		= "ECHO_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   60  	[PPTP_ECHO_REPLY]		= "ECHO_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   61  	[PPTP_OUT_CALL_REQUEST]		= "OUT_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   62  	[PPTP_OUT_CALL_REPLY]		= "OUT_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   63  	[PPTP_IN_CALL_REQUEST]		= "IN_CALL_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   64  	[PPTP_IN_CALL_REPLY]		= "IN_CALL_REPLY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   65  	[PPTP_IN_CALL_CONNECT]		= "IN_CALL_CONNECT",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   66  	[PPTP_CALL_CLEAR_REQUEST]	= "CALL_CLEAR_REQUEST",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   67  	[PPTP_CALL_DISCONNECT_NOTIFY]	= "CALL_DISCONNECT_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   68  	[PPTP_WAN_ERROR_NOTIFY]		= "WAN_ERROR_NOTIFY",
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   69  	[PPTP_SET_LINK_INFO]		= "SET_LINK_INFO"
f09943fefe6b70 Patrick McHardy   2006-12-02   70  };
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   71  
4946ea5c123703 Pablo Neira Ayuso 2020-05-27   72  const char *pptp_msg_name(u_int16_t msg)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   73  {
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   74  	if (msg > PPTP_MSG_MAX)
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   75  		return pptp_msg_name_array[0];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   76  
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   77  	return pptp_msg_name_array[msg];
4c559f15efcc43 Pablo Neira Ayuso 2020-05-14   78  }
f09943fefe6b70 Patrick McHardy   2006-12-02   79  EXPORT_SYMBOL(pptp_msg_name);
f09943fefe6b70 Patrick McHardy   2006-12-02   80  #endif
f09943fefe6b70 Patrick McHardy   2006-12-02   81  
f09943fefe6b70 Patrick McHardy   2006-12-02   82  #define SECS *HZ
f09943fefe6b70 Patrick McHardy   2006-12-02   83  #define MINS * 60 SECS
f09943fefe6b70 Patrick McHardy   2006-12-02   84  #define HOURS * 60 MINS
f09943fefe6b70 Patrick McHardy   2006-12-02   85  
f09943fefe6b70 Patrick McHardy   2006-12-02   86  #define PPTP_GRE_TIMEOUT 		(10 MINS)
f09943fefe6b70 Patrick McHardy   2006-12-02   87  #define PPTP_GRE_STREAM_TIMEOUT 	(5 HOURS)
f09943fefe6b70 Patrick McHardy   2006-12-02   88  
f09943fefe6b70 Patrick McHardy   2006-12-02   89  static void pptp_expectfn(struct nf_conn *ct,
f09943fefe6b70 Patrick McHardy   2006-12-02   90  			 struct nf_conntrack_expect *exp)
f09943fefe6b70 Patrick McHardy   2006-12-02   91  {
ffa8a2dcecaa35 Florian Westphal  2022-01-20   92  	const struct nf_nat_pptp_hook *hook;
0e6e75af921d1f Alexey Dobriyan   2008-10-08   93  	struct net *net = nf_ct_net(ct);
0d53778e81ac7a Patrick McHardy   2007-07-07   94  	pr_debug("increasing timeouts\n");
f09943fefe6b70 Patrick McHardy   2006-12-02   95  
f09943fefe6b70 Patrick McHardy   2006-12-02   96  	/* increase timeout of GRE data channel conntrack entry */
f09943fefe6b70 Patrick McHardy   2006-12-02   97  	ct->proto.gre.timeout	     = PPTP_GRE_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   98  	ct->proto.gre.stream_timeout = PPTP_GRE_STREAM_TIMEOUT;
f09943fefe6b70 Patrick McHardy   2006-12-02   99  
f09943fefe6b70 Patrick McHardy   2006-12-02  100  	/* Can you see how rusty this code is, compared with the pre-2.6.11
f09943fefe6b70 Patrick McHardy   2006-12-02  101  	 * one? That's what happened to my shiny newnat of 2002 ;( -HW */
f09943fefe6b70 Patrick McHardy   2006-12-02  102  
ffa8a2dcecaa35 Florian Westphal  2022-01-20 @103  	hook = rcu_dereference(nf_nat_pptp_hook);
ffa8a2dcecaa35 Florian Westphal  2022-01-20  104  	if (hook && ct->master->status & IPS_NAT_MASK)
ffa8a2dcecaa35 Florian Westphal  2022-01-20  105  		hook->expectfn(ct, exp);
f09943fefe6b70 Patrick McHardy   2006-12-02  106  	else {
f09943fefe6b70 Patrick McHardy   2006-12-02  107  		struct nf_conntrack_tuple inv_t;
f09943fefe6b70 Patrick McHardy   2006-12-02  108  		struct nf_conntrack_expect *exp_other;
f09943fefe6b70 Patrick McHardy   2006-12-02  109  
f09943fefe6b70 Patrick McHardy   2006-12-02  110  		/* obviously this tuple inversion only works until you do NAT */
303e0c5589592e Florian Westphal  2019-01-15  111  		nf_ct_invert_tuple(&inv_t, &exp->tuple);
0d53778e81ac7a Patrick McHardy   2007-07-07  112  		pr_debug("trying to unexpect other dir: ");
3c9fba656a185c Jan Engelhardt    2008-04-14  113  		nf_ct_dump_tuple(&inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  114  
5d0aa2ccd4699a Patrick McHardy   2010-02-15  115  		exp_other = nf_ct_expect_find_get(net, nf_ct_zone(ct), &inv_t);
f09943fefe6b70 Patrick McHardy   2006-12-02  116  		if (exp_other) {
f09943fefe6b70 Patrick McHardy   2006-12-02  117  			/* delete other expectation.  */
0d53778e81ac7a Patrick McHardy   2007-07-07  118  			pr_debug("found\n");
6823645d608541 Patrick McHardy   2007-07-07  119  			nf_ct_unexpect_related(exp_other);
6823645d608541 Patrick McHardy   2007-07-07  120  			nf_ct_expect_put(exp_other);
f09943fefe6b70 Patrick McHardy   2006-12-02  121  		} else {
0d53778e81ac7a Patrick McHardy   2007-07-07  122  			pr_debug("not found\n");
f09943fefe6b70 Patrick McHardy   2006-12-02  123  		}
f09943fefe6b70 Patrick McHardy   2006-12-02  124  	}
f09943fefe6b70 Patrick McHardy   2006-12-02  125  }
f09943fefe6b70 Patrick McHardy   2006-12-02  126  

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-02-08 15:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-25 10:43 [PATCH nf-next] netfilter: conntrack: pptp: use single option structure kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-02-08 15:29 kernel test robot
2022-02-07 10:01 kernel test robot
2022-01-21  3:10 kernel test robot
2022-01-20 15:09 Florian Westphal

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.