aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS1
-rw-r--r--net/ipv6/xfrm6_policy.c4
-rw-r--r--net/xfrm/xfrm_interface.c3
-rw-r--r--net/xfrm/xfrm_policy.c8
4 files changed, 9 insertions, 7 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 6ac000cc006d..85e7152c8f62 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10122,7 +10122,6 @@ L: netdev@vger.kernel.org
10122T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git 10122T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git
10123T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git 10123T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git
10124S: Maintained 10124S: Maintained
10125F: net/core/flow.c
10126F: net/xfrm/ 10125F: net/xfrm/
10127F: net/key/ 10126F: net/key/
10128F: net/ipv4/xfrm* 10127F: net/ipv4/xfrm*
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index ef3defaf43b9..d35bcf92969c 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -146,8 +146,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
146 fl6->daddr = reverse ? hdr->saddr : hdr->daddr; 146 fl6->daddr = reverse ? hdr->saddr : hdr->daddr;
147 fl6->saddr = reverse ? hdr->daddr : hdr->saddr; 147 fl6->saddr = reverse ? hdr->daddr : hdr->saddr;
148 148
149 while (nh + offset + 1 < skb->data || 149 while (nh + offset + sizeof(*exthdr) < skb->data ||
150 pskb_may_pull(skb, nh + offset + 1 - skb->data)) { 150 pskb_may_pull(skb, nh + offset + sizeof(*exthdr) - skb->data)) {
151 nh = skb_network_header(skb); 151 nh = skb_network_header(skb);
152 exthdr = (struct ipv6_opt_hdr *)(nh + offset); 152 exthdr = (struct ipv6_opt_hdr *)(nh + offset);
153 153
diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c
index 31acc6f33d98..6f05e831a73e 100644
--- a/net/xfrm/xfrm_interface.c
+++ b/net/xfrm/xfrm_interface.c
@@ -116,6 +116,9 @@ static void xfrmi_unlink(struct xfrmi_net *xfrmn, struct xfrm_if *xi)
116 116
117static void xfrmi_dev_free(struct net_device *dev) 117static void xfrmi_dev_free(struct net_device *dev)
118{ 118{
119 struct xfrm_if *xi = netdev_priv(dev);
120
121 gro_cells_destroy(&xi->gro_cells);
119 free_percpu(dev->tstats); 122 free_percpu(dev->tstats);
120} 123}
121 124
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index f094d4b3520d..119a427d9b2b 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -632,9 +632,9 @@ static void xfrm_hash_rebuild(struct work_struct *work)
632 break; 632 break;
633 } 633 }
634 if (newpos) 634 if (newpos)
635 hlist_add_behind(&policy->bydst, newpos); 635 hlist_add_behind_rcu(&policy->bydst, newpos);
636 else 636 else
637 hlist_add_head(&policy->bydst, chain); 637 hlist_add_head_rcu(&policy->bydst, chain);
638 } 638 }
639 639
640 spin_unlock_bh(&net->xfrm.xfrm_policy_lock); 640 spin_unlock_bh(&net->xfrm.xfrm_policy_lock);
@@ -774,9 +774,9 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
774 break; 774 break;
775 } 775 }
776 if (newpos) 776 if (newpos)
777 hlist_add_behind(&policy->bydst, newpos); 777 hlist_add_behind_rcu(&policy->bydst, newpos);
778 else 778 else
779 hlist_add_head(&policy->bydst, chain); 779 hlist_add_head_rcu(&policy->bydst, chain);
780 __xfrm_policy_link(policy, dir); 780 __xfrm_policy_link(policy, dir);
781 781
782 /* After previous checking, family can either be AF_INET or AF_INET6 */ 782 /* After previous checking, family can either be AF_INET or AF_INET6 */