All of lore.kernel.org
 help / color / mirror / Atom feed
* pull request (net): ipsec 2017-06-23
@ 2017-06-23  7:06 Steffen Klassert
  2017-06-23  7:06 ` [PATCH 1/6] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD Steffen Klassert
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

1) Fix xfrm garbage collecting when unregistering a netdevice.
   From Hangbin Liu.

2) Fix NULL pointer derefernce when exiting a network namespace.
   From Hangbin Liu.

3) Fix some error codes in pfkey to prevent a NULL pointer derefernce.
   From Dan Carpenter.

4) Fix NULL pointer derefernce on allocation failure in pfkey.
   From Dan Carpenter.

5) Adjust IPv6 payload_len to include extension headers. Otherwise
   we corrupt the packets when doing ESP GRO on transport mode.
   From Yossi Kuperman.

6) Set nhoff to the proper offset of the IPv6 nexthdr when doing ESP GRO.
   From Yossi Kuperman.

Please pull or let me know if there are problems.

Thanks!

The following changes since commit b29794ec95c6856b316c2295904208bf11ffddd9:

  Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2017-06-06 14:30:17 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git master

for you to fetch changes up to ca3a1b856636f596c691ab5b3764045a142186db:

  esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO (2017-06-22 10:49:14 +0200)

----------------------------------------------------------------
Dan Carpenter (2):
      xfrm: Oops on error in pfkey_msg2xfrm_state()
      xfrm: NULL dereference on allocation failure

Hangbin Liu (2):
      xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD
      xfrm: move xfrm_garbage_collect out of xfrm_policy_flush

Yossi Kuperman (2):
      xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish
      esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO

 include/net/xfrm.h      |  7 ++-----
 net/ipv6/esp6_offload.c | 25 +++++++++++++++++++++++++
 net/ipv6/xfrm6_input.c  |  2 +-
 net/key/af_key.c        | 19 +++++++++++++++----
 net/xfrm/Makefile       |  3 +--
 net/xfrm/xfrm_device.c  |  2 ++
 net/xfrm/xfrm_policy.c  |  4 ----
 net/xfrm/xfrm_user.c    |  1 +
 8 files changed, 47 insertions(+), 16 deletions(-)

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

* [PATCH 1/6] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23  7:06 ` [PATCH 2/6] xfrm: move xfrm_garbage_collect out of xfrm_policy_flush Steffen Klassert
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Hangbin Liu <liuhangbin@gmail.com>

In commit d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API") we
make xfrm_device.o only compiled when enable option CONFIG_XFRM_OFFLOAD.
But this will make xfrm_dev_event() missing if we only enable default XFRM
options.

Then if we set down and unregister an interface with IPsec on it. there
will no xfrm_garbage_collect(), which will cause dev usage count hold and
get error like:

unregister_netdevice: waiting for <dev> to become free. Usage count = 4

Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 include/net/xfrm.h     | 7 ++-----
 net/xfrm/Makefile      | 3 +--
 net/xfrm/xfrm_device.c | 2 ++
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 7e7e2b0..62f5a25 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1850,8 +1850,9 @@ static inline struct xfrm_offload *xfrm_offload(struct sk_buff *skb)
 }
 #endif
 
-#ifdef CONFIG_XFRM_OFFLOAD
 void __net_init xfrm_dev_init(void);
+
+#ifdef CONFIG_XFRM_OFFLOAD
 int validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t features);
 int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,
 		       struct xfrm_user_offload *xuo);
@@ -1877,10 +1878,6 @@ static inline void xfrm_dev_state_free(struct xfrm_state *x)
 	}
 }
 #else
-static inline void __net_init xfrm_dev_init(void)
-{
-}
-
 static inline int validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t features)
 {
 	return 0;
diff --git a/net/xfrm/Makefile b/net/xfrm/Makefile
index abf81b3..55b2ac3 100644
--- a/net/xfrm/Makefile
+++ b/net/xfrm/Makefile
@@ -4,8 +4,7 @@
 
 obj-$(CONFIG_XFRM) := xfrm_policy.o xfrm_state.o xfrm_hash.o \
 		      xfrm_input.o xfrm_output.o \
-		      xfrm_sysctl.o xfrm_replay.o
-obj-$(CONFIG_XFRM_OFFLOAD) += xfrm_device.o
+		      xfrm_sysctl.o xfrm_replay.o xfrm_device.o
 obj-$(CONFIG_XFRM_STATISTICS) += xfrm_proc.o
 obj-$(CONFIG_XFRM_ALGO) += xfrm_algo.o
 obj-$(CONFIG_XFRM_USER) += xfrm_user.o
diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c
index 574e6f3..5aba036 100644
--- a/net/xfrm/xfrm_device.c
+++ b/net/xfrm/xfrm_device.c
@@ -22,6 +22,7 @@
 #include <net/xfrm.h>
 #include <linux/notifier.h>
 
+#ifdef CONFIG_XFRM_OFFLOAD
 int validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t features)
 {
 	int err;
@@ -137,6 +138,7 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
 	return true;
 }
 EXPORT_SYMBOL_GPL(xfrm_dev_offload_ok);
+#endif
 
 int xfrm_dev_register(struct net_device *dev)
 {
-- 
2.7.4

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

* [PATCH 2/6] xfrm: move xfrm_garbage_collect out of xfrm_policy_flush
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
  2017-06-23  7:06 ` [PATCH 1/6] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23  7:06 ` [PATCH 3/6] xfrm: Oops on error in pfkey_msg2xfrm_state() Steffen Klassert
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Hangbin Liu <liuhangbin@gmail.com>

Now we will force to do garbage collection if any policy removed in
xfrm_policy_flush(). But during xfrm_net_exit(). We call flow_cache_fini()
first and set set fc->percpu to NULL. Then after we call xfrm_policy_fini()
-> frxm_policy_flush() -> flow_cache_flush(), we will get NULL pointer
dereference when check percpu_empty. The code path looks like:

flow_cache_fini()
  - fc->percpu = NULL
xfrm_policy_fini()
  - xfrm_policy_flush()
    - xfrm_garbage_collect()
      - flow_cache_flush()
        - flow_cache_percpu_empty()
	  - fcp = per_cpu_ptr(fc->percpu, cpu)

To reproduce, just add ipsec in netns and then remove the netns.

v2:
As Xin Long suggested, since only two other places need to call it. move
xfrm_garbage_collect() outside xfrm_policy_flush().

v3:
Fix subject mismatch after v2 fix.

Fixes: 35db06912189 ("xfrm: do the garbage collection after flushing policy")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/key/af_key.c       | 2 ++
 net/xfrm/xfrm_policy.c | 4 ----
 net/xfrm/xfrm_user.c   | 1 +
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/net/key/af_key.c b/net/key/af_key.c
index 512dc43..5103f92 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -2755,6 +2755,8 @@ static int pfkey_spdflush(struct sock *sk, struct sk_buff *skb, const struct sad
 	int err, err2;
 
 	err = xfrm_policy_flush(net, XFRM_POLICY_TYPE_MAIN, true);
+	if (!err)
+		xfrm_garbage_collect(net);
 	err2 = unicast_flush_resp(sk, hdr);
 	if (err || err2) {
 		if (err == -ESRCH) /* empty table - old silent behavior */
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index ed4e52d..643a18f 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1006,10 +1006,6 @@ int xfrm_policy_flush(struct net *net, u8 type, bool task_valid)
 		err = -ESRCH;
 out:
 	spin_unlock_bh(&net->xfrm.xfrm_policy_lock);
-
-	if (cnt)
-		xfrm_garbage_collect(net);
-
 	return err;
 }
 EXPORT_SYMBOL(xfrm_policy_flush);
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 38614df..86116e9 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -2027,6 +2027,7 @@ static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
 			return 0;
 		return err;
 	}
+	xfrm_garbage_collect(net);
 
 	c.data.type = type;
 	c.event = nlh->nlmsg_type;
-- 
2.7.4

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

* [PATCH 3/6] xfrm: Oops on error in pfkey_msg2xfrm_state()
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
  2017-06-23  7:06 ` [PATCH 1/6] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD Steffen Klassert
  2017-06-23  7:06 ` [PATCH 2/6] xfrm: move xfrm_garbage_collect out of xfrm_policy_flush Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23  7:06 ` [PATCH 4/6] xfrm: NULL dereference on allocation failure Steffen Klassert
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Dan Carpenter <dan.carpenter@oracle.com>

There are some missing error codes here so we accidentally return NULL
instead of an error pointer.  It results in a NULL pointer dereference.

Fixes: df71837d5024 ("[LSM-IPSec]: Security association restriction.")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/key/af_key.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/net/key/af_key.c b/net/key/af_key.c
index 5103f92..2b82ada 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1168,8 +1168,10 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
 		if (key)
 			keysize = (key->sadb_key_bits + 7) / 8;
 		x->aalg = kmalloc(sizeof(*x->aalg) + keysize, GFP_KERNEL);
-		if (!x->aalg)
+		if (!x->aalg) {
+			err = -ENOMEM;
 			goto out;
+		}
 		strcpy(x->aalg->alg_name, a->name);
 		x->aalg->alg_key_len = 0;
 		if (key) {
@@ -1188,8 +1190,10 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
 				goto out;
 			}
 			x->calg = kmalloc(sizeof(*x->calg), GFP_KERNEL);
-			if (!x->calg)
+			if (!x->calg) {
+				err = -ENOMEM;
 				goto out;
+			}
 			strcpy(x->calg->alg_name, a->name);
 			x->props.calgo = sa->sadb_sa_encrypt;
 		} else {
@@ -1203,8 +1207,10 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
 			if (key)
 				keysize = (key->sadb_key_bits + 7) / 8;
 			x->ealg = kmalloc(sizeof(*x->ealg) + keysize, GFP_KERNEL);
-			if (!x->ealg)
+			if (!x->ealg) {
+				err = -ENOMEM;
 				goto out;
+			}
 			strcpy(x->ealg->alg_name, a->name);
 			x->ealg->alg_key_len = 0;
 			if (key) {
@@ -1249,8 +1255,10 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
 		struct xfrm_encap_tmpl *natt;
 
 		x->encap = kmalloc(sizeof(*x->encap), GFP_KERNEL);
-		if (!x->encap)
+		if (!x->encap) {
+			err = -ENOMEM;
 			goto out;
+		}
 
 		natt = x->encap;
 		n_type = ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1];
-- 
2.7.4

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

* [PATCH 4/6] xfrm: NULL dereference on allocation failure
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
                   ` (2 preceding siblings ...)
  2017-06-23  7:06 ` [PATCH 3/6] xfrm: Oops on error in pfkey_msg2xfrm_state() Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23  7:06 ` [PATCH 5/6] xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish Steffen Klassert
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Dan Carpenter <dan.carpenter@oracle.com>

The default error code in pfkey_msg2xfrm_state() is -ENOBUFS.  We
added a new call to security_xfrm_state_alloc() which sets "err" to zero
so there several places where we can return ERR_PTR(0) if kmalloc()
fails.  The caller is expecting error pointers so it leads to a NULL
dereference.

Fixes: df71837d5024 ("[LSM-IPSec]: Security association restriction.")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/key/af_key.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/key/af_key.c b/net/key/af_key.c
index 2b82ada..b1432b6 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1157,6 +1157,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
 			goto out;
 	}
 
+	err = -ENOBUFS;
 	key = ext_hdrs[SADB_EXT_KEY_AUTH - 1];
 	if (sa->sadb_sa_auth) {
 		int keysize = 0;
-- 
2.7.4

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

* [PATCH 5/6] xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
                   ` (3 preceding siblings ...)
  2017-06-23  7:06 ` [PATCH 4/6] xfrm: NULL dereference on allocation failure Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23  7:06 ` [PATCH 6/6] esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO Steffen Klassert
  2017-06-23 18:11 ` pull request (net): ipsec 2017-06-23 David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Yossi Kuperman <yossiku@mellanox.com>

IPv6 payload length indicates the size of the payload, including any
extension headers.

In xfrm6_transport_finish, ipv6_hdr(skb)->payload_len is set to the
payload size only, regardless of the presence of any extension headers.
After ESP GRO transport mode decapsulation, ipv6_rcv trims the packet
according to the wrong payload_len, thus corrupting the packet.

Set payload_len to account for extension headers as well.

Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
Signed-off-by: Yossi Kuperman <yossiku@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/ipv6/xfrm6_input.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c
index 08a807b..3ef5d91 100644
--- a/net/ipv6/xfrm6_input.c
+++ b/net/ipv6/xfrm6_input.c
@@ -43,8 +43,8 @@ int xfrm6_transport_finish(struct sk_buff *skb, int async)
 		return 1;
 #endif
 
-	ipv6_hdr(skb)->payload_len = htons(skb->len);
 	__skb_push(skb, skb->data - skb_network_header(skb));
+	ipv6_hdr(skb)->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
 
 	if (xo && (xo->flags & XFRM_GRO)) {
 		skb_mac_header_rebuild(skb);
-- 
2.7.4

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

* [PATCH 6/6] esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
                   ` (4 preceding siblings ...)
  2017-06-23  7:06 ` [PATCH 5/6] xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish Steffen Klassert
@ 2017-06-23  7:06 ` Steffen Klassert
  2017-06-23 18:11 ` pull request (net): ipsec 2017-06-23 David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: Steffen Klassert @ 2017-06-23  7:06 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Yossi Kuperman <yossiku@mellanox.com>

IP6CB(skb)->nhoff is the offset of the nexthdr field in an IPv6
header, unless there are extension headers present, in which case
nhoff points to the nexthdr field of the last extension header.

In non-GRO code path, nhoff is set by ipv6_rcv before any XFRM code
is executed. Conversely, in GRO code path (when esp6_offload is loaded),
nhoff is not set. The following functions fail to read the correct value
and eventually the packet is dropped:

    xfrm6_transport_finish
    xfrm6_tunnel_input
    xfrm6_rcv_tnl

Set nhoff to the proper offset of nexthdr in esp6_gro_receive.

Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
Signed-off-by: Yossi Kuperman <yossiku@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/ipv6/esp6_offload.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c
index d950d43..f02f131 100644
--- a/net/ipv6/esp6_offload.c
+++ b/net/ipv6/esp6_offload.c
@@ -30,6 +30,25 @@
 #include <net/ipv6.h>
 #include <linux/icmpv6.h>
 
+static __u16 esp6_nexthdr_esp_offset(struct ipv6hdr *ipv6_hdr, int nhlen)
+{
+	int off = sizeof(struct ipv6hdr);
+	struct ipv6_opt_hdr *exthdr;
+
+	if (likely(ipv6_hdr->nexthdr == NEXTHDR_ESP))
+		return offsetof(struct ipv6hdr, nexthdr);
+
+	while (off < nhlen) {
+		exthdr = (void *)ipv6_hdr + off;
+		if (exthdr->nexthdr == NEXTHDR_ESP)
+			return off;
+
+		off += ipv6_optlen(exthdr);
+	}
+
+	return 0;
+}
+
 static struct sk_buff **esp6_gro_receive(struct sk_buff **head,
 					 struct sk_buff *skb)
 {
@@ -38,6 +57,7 @@ static struct sk_buff **esp6_gro_receive(struct sk_buff **head,
 	struct xfrm_state *x;
 	__be32 seq;
 	__be32 spi;
+	int nhoff;
 	int err;
 
 	skb_pull(skb, offset);
@@ -72,6 +92,11 @@ static struct sk_buff **esp6_gro_receive(struct sk_buff **head,
 
 	xo->flags |= XFRM_GRO;
 
+	nhoff = esp6_nexthdr_esp_offset(ipv6_hdr(skb), offset);
+	if (!nhoff)
+		goto out;
+
+	IP6CB(skb)->nhoff = nhoff;
 	XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6 = NULL;
 	XFRM_SPI_SKB_CB(skb)->family = AF_INET6;
 	XFRM_SPI_SKB_CB(skb)->daddroff = offsetof(struct ipv6hdr, daddr);
-- 
2.7.4

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

* Re: pull request (net): ipsec 2017-06-23
  2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
                   ` (5 preceding siblings ...)
  2017-06-23  7:06 ` [PATCH 6/6] esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO Steffen Klassert
@ 2017-06-23 18:11 ` David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2017-06-23 18:11 UTC (permalink / raw)
  To: steffen.klassert; +Cc: herbert, netdev

From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Fri, 23 Jun 2017 09:06:28 +0200

> 1) Fix xfrm garbage collecting when unregistering a netdevice.
>    From Hangbin Liu.
> 
> 2) Fix NULL pointer derefernce when exiting a network namespace.
>    From Hangbin Liu.
> 
> 3) Fix some error codes in pfkey to prevent a NULL pointer derefernce.
>    From Dan Carpenter.
> 
> 4) Fix NULL pointer derefernce on allocation failure in pfkey.
>    From Dan Carpenter.
> 
> 5) Adjust IPv6 payload_len to include extension headers. Otherwise
>    we corrupt the packets when doing ESP GRO on transport mode.
>    From Yossi Kuperman.
> 
> 6) Set nhoff to the proper offset of the IPv6 nexthdr when doing ESP GRO.
>    From Yossi Kuperman.
> 
> Please pull or let me know if there are problems.

Pulled, thanks Steffen!

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

end of thread, other threads:[~2017-06-23 18:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-23  7:06 pull request (net): ipsec 2017-06-23 Steffen Klassert
2017-06-23  7:06 ` [PATCH 1/6] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD Steffen Klassert
2017-06-23  7:06 ` [PATCH 2/6] xfrm: move xfrm_garbage_collect out of xfrm_policy_flush Steffen Klassert
2017-06-23  7:06 ` [PATCH 3/6] xfrm: Oops on error in pfkey_msg2xfrm_state() Steffen Klassert
2017-06-23  7:06 ` [PATCH 4/6] xfrm: NULL dereference on allocation failure Steffen Klassert
2017-06-23  7:06 ` [PATCH 5/6] xfrm6: Fix IPv6 payload_len in xfrm6_transport_finish Steffen Klassert
2017-06-23  7:06 ` [PATCH 6/6] esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO Steffen Klassert
2017-06-23 18:11 ` pull request (net): ipsec 2017-06-23 David Miller

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.