Skip to contentSkip to conversation

pull request (net-next): ipsec-next 2018-03-29

PATCH New Steffen Klassert 2 participants 6 messages Mar 29, 2018

Subsystems (3)
lore
Share & tools
lore

Steffen Klassert

author maintainer
#0 lore raw

1) Remove a redundant pointer initialization esp_input_set_header(). From Colin Ian King.

2) Mark the xfrm kmem_caches as __ro_after_init.
From Alexey Dobriyan.

3) Do the checksum for an ipsec offlad packet in software if the device does not advertise NETIF_F_HW_ESP_TX_CSUM. From Shannon Nelson.

4) Use booleans for true and false instead of integers in xfrm_policy_cache_flush().
From Gustavo A. R. Silva

Please pull or let me know if there are problems.

Thanks!

The following changes since commit cf19e5e2054f5172c07a152f9e04eb3bae3d86dd:

Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue (2018-02-12 19:55:33 -0500)

are available in the git repository at:

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

for you to fetch changes up to 415a13296a1a49639cabf9d2fe92267810caa47a:

xfrm_policy: use true and false for boolean values (2018-03-07 10:55:13 +0100)

----------------------------------------------------------------
Alexey Dobriyan (1):
xfrm: mark kmem_caches as __ro_after_init

Colin Ian King (1):
esp4: remove redundant initialization of pointer esph

Gustavo A. R. Silva (1):
xfrm_policy: use true and false for boolean values

Shannon Nelson (1):
esp: check the NETIF_F_HW_ESP_TX_CSUM bit before segmenting

 net/ipv4/esp4.c         | 2 +-
 net/ipv4/esp4_offload.c | 2 ++
 net/ipv6/esp6_offload.c | 2 ++
 net/xfrm/xfrm_input.c   | 3 ++-
 net/xfrm/xfrm_policy.c  | 4 ++--
 5 files changed, 9 insertions(+), 4 deletions(-)
author maintainer
#1 lore raw

PATCH 1/4 esp4: remove redundant initialization of pointer esph

From: Colin Ian King <[email protected]>

Pointer esph is being assigned a value that is never read, esph is re-assigned and only read inside an if statement, hence the initialization is redundant and can be removed.

Cleans up clang warning:
net/ipv4/esp4.c:657:21: warning: Value stored to 'esph' during its initialization is never read

---
 net/ipv4/esp4.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/ipv4/esp4.c +1 -1
index 296d0b956bfe..97689012b357 100644
@@ -654,7 +654,7 @@ static void esp_input_restore_header(struct sk_buff *skb)
 static void esp_input_set_header(struct sk_buff *skb, __be32 *seqhi)
 {
 	struct xfrm_state *x = xfrm_input_state(skb);
-	struct ip_esp_hdr *esph = (struct ip_esp_hdr *)skb->data;
+	struct ip_esp_hdr *esph;
 
 	/* For ESN we move the header forward by 4 bytes to
 	 * accomodate the high bits.  We will move it back after
Signature · 1 line
2.14.1
author maintainer
#2 lore raw

PATCH 2/4 xfrm: mark kmem_caches as __ro_after_init

In reply to Steffen Klassert

From: Alexey Dobriyan <[email protected]>

Kmem caches aren't relocated once set up.

---
 net/xfrm/xfrm_input.c  | 3 ++-
 net/xfrm/xfrm_policy.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)
net/xfrm/xfrm_input.c +2 -1
index 1472c0857975..44fc54dc013c 100644
@@ -9,6 +9,7 @@
  */
 
 #include <linux/bottom_half.h>
+#include <linux/cache.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/module.h>
@@ -31,7 +32,7 @@ struct xfrm_trans_cb {
 
 #define XFRM_TRANS_SKB_CB(__skb) ((struct xfrm_trans_cb *)&((__skb)->cb[0]))
 
-static struct kmem_cache *secpath_cachep __read_mostly;
+static struct kmem_cache *secpath_cachep __ro_after_init;
 
 static DEFINE_SPINLOCK(xfrm_input_afinfo_lock);
 static struct xfrm_input_afinfo const __rcu *xfrm_input_afinfo[AF_INET6 + 1];
net/xfrm/xfrm_policy.c +1 -1
index 7a23078132cf..12bd415d349e 100644
@@ -51,7 +51,7 @@ static DEFINE_SPINLOCK(xfrm_policy_afinfo_lock);
 static struct xfrm_policy_afinfo const __rcu *xfrm_policy_afinfo[AF_INET6 + 1]
 						__read_mostly;
 
-static struct kmem_cache *xfrm_dst_cache __read_mostly;
+static struct kmem_cache *xfrm_dst_cache __ro_after_init;
 static __read_mostly seqcount_t xfrm_policy_hash_generation;
 
 static void xfrm_init_pmtu(struct xfrm_dst **bundle, int nr);
Signature · 1 line
2.14.1
author maintainer
#3 lore raw

PATCH 3/4 esp: check the NETIF_F_HW_ESP_TX_CSUM bit before segmenting

In reply to Steffen Klassert

From: Shannon Nelson <[email protected]>

If I understand correctly, we should not be asking for a checksum offload on an ipsec packet if the netdev isn't advertising NETIF_F_HW_ESP_TX_CSUM. In that case, we should clear the NETIF_F_CSUM_MASK bits.

---
 net/ipv4/esp4_offload.c | 2 ++
 net/ipv6/esp6_offload.c | 2 ++
 2 files changed, 4 insertions(+)
net/ipv4/esp4_offload.c +2 -0
index da5635fc52c2..7cf755ef9efb 100644
@@ -138,6 +138,8 @@ static struct sk_buff *esp4_gso_segment(struct sk_buff *skb,
 	if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
 	    (x->xso.dev != skb->dev))
 		esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK);
+	else if (!(features & NETIF_F_HW_ESP_TX_CSUM))
+		esp_features = features & ~NETIF_F_CSUM_MASK;
 
 	xo->flags |= XFRM_GSO_SEGMENT;
 
net/ipv6/esp6_offload.c +2 -0
index 3fd1ec775dc2..27f59b61f70f 100644
@@ -165,6 +165,8 @@ static struct sk_buff *esp6_gso_segment(struct sk_buff *skb,
 	if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
 	    (x->xso.dev != skb->dev))
 		esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK);
+	else if (!(features & NETIF_F_HW_ESP_TX_CSUM))
+		esp_features = features & ~NETIF_F_CSUM_MASK;
 
 	xo->flags |= XFRM_GSO_SEGMENT;
 
Signature · 1 line
2.14.1
author maintainer
#4 lore raw

PATCH 4/4 xfrm_policy: use true and false for boolean values

In reply to Steffen Klassert

From: "Gustavo A. R. Silva" <[email protected]>

Assign true or false to boolean variables instead of an integer value.

This issue was detected with the help of Coccinelle.

---
 net/xfrm/xfrm_policy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/xfrm/xfrm_policy.c +1 -1
index 12bd415d349e..2b7babb66175 100644
@@ -1740,7 +1740,7 @@ static void xfrm_pcpu_work_fn(struct work_struct *work)
 void xfrm_policy_cache_flush(void)
 {
 	struct xfrm_dst *old;
-	bool found = 0;
+	bool found = false;
 	int cpu;
 
 	might_sleep();
Signature · 1 line
2.14.1
maintainer
#5 lore raw
In reply to Steffen Klassert

From: Steffen Klassert <[email protected]>
Date: Thu, 29 Mar 2018 09:25:45 +0200

Quoted 10 lines

1) Remove a redundant pointer initialization esp_input_set_header(). From Colin Ian King.

2) Mark the xfrm kmem_caches as __ro_after_init.
From Alexey Dobriyan.

3) Do the checksum for an ipsec offlad packet in software if the device does not advertise NETIF_F_HW_ESP_TX_CSUM. From Shannon Nelson.

Quoted 5 lines

4) Use booleans for true and false instead of integers in xfrm_policy_cache_flush().
From Gustavo A. R. Silva

Please pull or let me know if there are problems.

Also pulled, thank you.