diff options
Diffstat (limited to 'net/ipv4/ip_fragment.c')
-rw-r--r-- | net/ipv4/ip_fragment.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index 301a389fa7fa..86964b353c31 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c | |||
@@ -206,10 +206,11 @@ static void ip_expire(unsigned long arg) | |||
206 | struct sk_buff *head = qp->q.fragments; | 206 | struct sk_buff *head = qp->q.fragments; |
207 | 207 | ||
208 | /* Send an ICMP "Fragment Reassembly Timeout" message. */ | 208 | /* Send an ICMP "Fragment Reassembly Timeout" message. */ |
209 | if ((head->dev = dev_get_by_index(net, qp->iif)) != NULL) { | 209 | rcu_read_lock(); |
210 | head->dev = dev_get_by_index_rcu(net, qp->iif); | ||
211 | if (head->dev) | ||
210 | icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); | 212 | icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); |
211 | dev_put(head->dev); | 213 | rcu_read_unlock(); |
212 | } | ||
213 | } | 214 | } |
214 | out: | 215 | out: |
215 | spin_unlock(&qp->q.lock); | 216 | spin_unlock(&qp->q.lock); |
@@ -651,7 +652,7 @@ static int ip4_frags_ns_ctl_register(struct net *net) | |||
651 | struct ctl_table_header *hdr; | 652 | struct ctl_table_header *hdr; |
652 | 653 | ||
653 | table = ip4_frags_ns_ctl_table; | 654 | table = ip4_frags_ns_ctl_table; |
654 | if (net != &init_net) { | 655 | if (!net_eq(net, &init_net)) { |
655 | table = kmemdup(table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL); | 656 | table = kmemdup(table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL); |
656 | if (table == NULL) | 657 | if (table == NULL) |
657 | goto err_alloc; | 658 | goto err_alloc; |
@@ -669,7 +670,7 @@ static int ip4_frags_ns_ctl_register(struct net *net) | |||
669 | return 0; | 670 | return 0; |
670 | 671 | ||
671 | err_reg: | 672 | err_reg: |
672 | if (net != &init_net) | 673 | if (!net_eq(net, &init_net)) |
673 | kfree(table); | 674 | kfree(table); |
674 | err_alloc: | 675 | err_alloc: |
675 | return -ENOMEM; | 676 | return -ENOMEM; |