pull request (net-next): ipsec-next 2018-03-29
Subsystems (3)
Steffen Klassert
maintainer1) 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(-)
Steffen Klassert
maintainerPATCH 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
@@ -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
Steffen Klassert
maintainerPATCH 2/4 xfrm: mark kmem_caches as __ro_after_init
In reply to Steffen KlassertFrom: 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
@@ -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
@@ -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
Steffen Klassert
maintainerPATCH 3/4 esp: check the NETIF_F_HW_ESP_TX_CSUM bit before segmenting
In reply to Steffen KlassertFrom: 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
@@ -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
@@ -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
Steffen Klassert
maintainerPATCH 4/4 xfrm_policy: use true and false for boolean values
In reply to Steffen KlassertFrom: "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
@@ -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
David Miller
maintainerFrom: 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_cachesas__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. SilvaPlease pull or let me know if there are problems.
Also pulled, thank you.