The conditional check introduced by this patch may trigger a NULL pointer
dereference in case the result of dev_net() is NULL.
Since the purpose of this patch is neither sufficiently explained and since
this patch apparently has never been submitted upstream despite it being in
the pending-* patch directory, I propose to drop it without replacement.
If the performance implications of dropping this patch are found to be
significiant, it should be reintroduced with proper description and
benchmark results.
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=2943
Signed-off-by: Jo-Philipp Wich <[email protected]>
+++ /dev/null
-Subject: kernel: add a small xfrm related performance optimization
-
----
- net/netfilter/nf_nat_core.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/net/netfilter/nf_nat_core.c
-+++ b/net/netfilter/nf_nat_core.c
-@@ -90,6 +90,9 @@ int nf_xfrm_me_harder(struct net *net, s
- struct dst_entry *dst;
- int err;
-
-+ if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
-+ return 0;
-+
- err = xfrm_decode_session(skb, &fl, family);
- if (err < 0)
- return err;
+++ /dev/null
-Subject: kernel: add a small xfrm related performance optimization
-
----
- net/netfilter/nf_nat_core.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/net/netfilter/nf_nat_core.c
-+++ b/net/netfilter/nf_nat_core.c
-@@ -110,6 +110,9 @@ int nf_xfrm_me_harder(struct net *net, s
- struct sock *sk = skb->sk;
- int err;
-
-+ if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
-+ return 0;
-+
- err = xfrm_decode_session(skb, &fl, family);
- if (err < 0)
- return err;
+++ /dev/null
-Subject: kernel: add a small xfrm related performance optimization
-
----
- net/netfilter/nf_nat_core.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/net/netfilter/nf_nat_core.c
-+++ b/net/netfilter/nf_nat_core.c
-@@ -155,6 +155,9 @@ int nf_xfrm_me_harder(struct net *net, s
- struct sock *sk = skb->sk;
- int err;
-
-+ if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
-+ return 0;
-+
- err = xfrm_decode_session(skb, &fl, family);
- if (err < 0)
- return err;