diff options
-rw-r--r-- | MAINTAINERS | 1 | ||||
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 4 | ||||
-rw-r--r-- | net/xfrm/xfrm_interface.c | 3 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 8 |
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 | |||
10122 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git | 10122 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git |
10123 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git | 10123 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git |
10124 | S: Maintained | 10124 | S: Maintained |
10125 | F: net/core/flow.c | ||
10126 | F: net/xfrm/ | 10125 | F: net/xfrm/ |
10127 | F: net/key/ | 10126 | F: net/key/ |
10128 | F: net/ipv4/xfrm* | 10127 | F: 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 | ||
117 | static void xfrmi_dev_free(struct net_device *dev) | 117 | static 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 */ |