Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1815 commits) mac80211: fix reorder buffer release iwmc3200wifi: Enable wimax core through module parameter iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter iwmc3200wifi: Coex table command does not expect a response iwmc3200wifi: Update wiwi priority table iwlwifi: driver version track kernel version iwlwifi: indicate uCode type when fail dump error/event log iwl3945: remove duplicated event logging code b43: fix two warnings ipw2100: fix rebooting hang with driver loaded cfg80211: indent regulatory messages with spaces iwmc3200wifi: fix NULL pointer dereference in pmkid update mac80211: Fix TX status reporting for injected data frames ath9k: enable 2GHz band only if the device supports it airo: Fix integer overflow warning rt2x00: Fix padding bug on L2PAD devices. WE: Fix set events not propagated b43legacy: avoid PPC fault during resume b43: avoid PPC fault during resume tcp: fix a timewait refcnt race ... Fix up conflicts due to sysctl cleanups (dead sysctl_check code and CTL_UNNUMBERED removed) in kernel/sysctl_check.c net/ipv4/sysctl_net_ipv4.c net/ipv6/addrconf.c net/sctp/sysctl.c
This commit is contained in:
@@ -208,18 +208,17 @@ static void ip6_frag_expire(unsigned long data)
|
||||
fq_kill(fq);
|
||||
|
||||
net = container_of(fq->q.net, struct net, ipv6.frags);
|
||||
dev = dev_get_by_index(net, fq->iif);
|
||||
if (!dev)
|
||||
goto out;
|
||||
|
||||
rcu_read_lock();
|
||||
dev = dev_get_by_index_rcu(net, fq->iif);
|
||||
if (!dev)
|
||||
goto out_rcu_unlock;
|
||||
|
||||
IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMTIMEOUT);
|
||||
IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
|
||||
rcu_read_unlock();
|
||||
|
||||
/* Don't send error if the first segment did not arrive. */
|
||||
if (!(fq->q.last_in & INET_FRAG_FIRST_IN) || !fq->q.fragments)
|
||||
goto out;
|
||||
goto out_rcu_unlock;
|
||||
|
||||
/*
|
||||
But use as source device on which LAST ARRIVED
|
||||
@@ -228,9 +227,9 @@ static void ip6_frag_expire(unsigned long data)
|
||||
*/
|
||||
fq->q.fragments->dev = dev;
|
||||
icmpv6_send(fq->q.fragments, ICMPV6_TIME_EXCEED, ICMPV6_EXC_FRAGTIME, 0, dev);
|
||||
out_rcu_unlock:
|
||||
rcu_read_unlock();
|
||||
out:
|
||||
if (dev)
|
||||
dev_put(dev);
|
||||
spin_unlock(&fq->q.lock);
|
||||
fq_put(fq);
|
||||
}
|
||||
@@ -676,7 +675,7 @@ static int ip6_frags_ns_sysctl_register(struct net *net)
|
||||
struct ctl_table_header *hdr;
|
||||
|
||||
table = ip6_frags_ns_ctl_table;
|
||||
if (net != &init_net) {
|
||||
if (!net_eq(net, &init_net)) {
|
||||
table = kmemdup(table, sizeof(ip6_frags_ns_ctl_table), GFP_KERNEL);
|
||||
if (table == NULL)
|
||||
goto err_alloc;
|
||||
@@ -694,7 +693,7 @@ static int ip6_frags_ns_sysctl_register(struct net *net)
|
||||
return 0;
|
||||
|
||||
err_reg:
|
||||
if (net != &init_net)
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(table);
|
||||
err_alloc:
|
||||
return -ENOMEM;
|
||||
|
Reference in New Issue
Block a user