Linux 3.2.3
This commit is contained in:
parent
ef90ec9278
commit
6d8eefbb61
33
kernel.spec
33
kernel.spec
|
@ -66,7 +66,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 2
|
||||
%define stable_update 3
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -763,9 +763,6 @@ Patch21045: nfs-client-freezer.patch
|
|||
#rhbz 590880
|
||||
Patch21046: alps.patch
|
||||
|
||||
#rhbz 746097
|
||||
Patch21049: tpm_tis-delay-after-aborting-cmd.patch
|
||||
|
||||
Patch21070: ext4-Support-check-none-nocheck-mount-options.patch
|
||||
Patch21071: ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
|
||||
|
||||
|
@ -800,19 +797,9 @@ Patch21225: pci-Rework-ASPM-disable-code.patch
|
|||
|
||||
Patch21226: pci-crs-blacklist.patch
|
||||
|
||||
Patch21227: mac80211-fix-work-removal-on-deauth-request.patch
|
||||
|
||||
#rhbz 718790
|
||||
Patch21230: rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch
|
||||
|
||||
#rhbz 784345
|
||||
Patch21231: realtek_async_autopm.patch
|
||||
|
||||
#rhbz 772772
|
||||
Patch21232: rt2x00_fix_MCU_request_failures.patch
|
||||
|
||||
Patch22000: rcu-reintroduce-missing-calls.patch
|
||||
|
||||
# compat-wireless patches
|
||||
Patch50000: compat-wireless-config-fixups.patch
|
||||
Patch50001: compat-wireless-pr_fmt-warning-avoidance.patch
|
||||
|
@ -824,7 +811,6 @@ Patch50100: compat-wireless-rtl8192cu-Fix-WARNING-on-suspend-resume.patch
|
|||
Patch50101: mac80211-fix-debugfs-key-station-symlink.patch
|
||||
Patch50102: brcmsmac-fix-tx-queue-flush-infinite-loop.patch
|
||||
Patch50103: mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
|
||||
# mac80211-fix-work-removal-on-deauth-request.patch is patch 21227
|
||||
Patch50105: b43-add-option-to-avoid-duplicating-device-support-w.patch
|
||||
Patch50106: mac80211-update-oper_channel-on-ibss-join.patch
|
||||
Patch50107: mac80211-set-bss_conf.idle-when-vif-is-connected.patch
|
||||
|
@ -1488,9 +1474,6 @@ ApplyPatch nfs-client-freezer.patch
|
|||
#rhbz 590880
|
||||
ApplyPatch alps.patch
|
||||
|
||||
#rhbz 746097
|
||||
ApplyPatch tpm_tis-delay-after-aborting-cmd.patch
|
||||
|
||||
#rhbz 771058
|
||||
ApplyPatch msi-irq-sysfs-warning.patch
|
||||
|
||||
|
@ -1510,19 +1493,9 @@ ApplyPatch procfs-parse-mount-options.patch
|
|||
ApplyPatch procfs-add-hidepid-and-gid-mount-options.patch
|
||||
ApplyPatch proc-fix-null-pointer-deref-in-proc_pid_permission.patch
|
||||
|
||||
ApplyPatch mac80211-fix-work-removal-on-deauth-request.patch
|
||||
|
||||
ApplyPatch rcu-reintroduce-missing-calls.patch
|
||||
|
||||
#rhbz 718790
|
||||
ApplyPatch rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch
|
||||
|
||||
#rhbz 783211
|
||||
ApplyPatch fs-Inval-cache-for-parent-block-device-if-fsync-called-on-part.patch
|
||||
|
||||
#rhbz 784345
|
||||
ApplyPatch realtek_async_autopm.patch
|
||||
|
||||
#rhbz 772772
|
||||
ApplyPatch rt2x00_fix_MCU_request_failures.patch
|
||||
|
||||
|
@ -1598,7 +1571,6 @@ ApplyPatch compat-wireless-rtl8192cu-Fix-WARNING-on-suspend-resume.patch
|
|||
ApplyPatch mac80211-fix-debugfs-key-station-symlink.patch
|
||||
ApplyPatch brcmsmac-fix-tx-queue-flush-infinite-loop.patch
|
||||
ApplyPatch mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
|
||||
ApplyPatch mac80211-fix-work-removal-on-deauth-request.patch
|
||||
ApplyPatch b43-add-option-to-avoid-duplicating-device-support-w.patch
|
||||
ApplyPatch mac80211-update-oper_channel-on-ibss-join.patch
|
||||
ApplyPatch mac80211-set-bss_conf.idle-when-vif-is-connected.patch
|
||||
|
@ -2314,6 +2286,9 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Fri Feb 03 2012 Dave Jones <davej@redhat.com>
|
||||
- Linux 3.2.3
|
||||
|
||||
* Fri Feb 03 2012 Josh Boyer <jwboyer@redhat.com>
|
||||
- Patch from Jakub Kicinski to fix rt2x00 MCU requests (rhbz 772772)
|
||||
|
||||
|
|
|
@ -1,109 +0,0 @@
|
|||
From bc4934bc61d0a11fd62c5187ff83645628f8be8b Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Wed, 18 Jan 2012 14:10:25 +0100
|
||||
Subject: [PATCH 4/8] mac80211: fix work removal on deauth request
|
||||
|
||||
When deauth is requested while an auth or assoc
|
||||
work item is in progress, we currently delete it
|
||||
without regard for any state it might need to
|
||||
clean up. Fix it by cleaning up for those items.
|
||||
|
||||
In the case Pontus found, the problem manifested
|
||||
itself as such:
|
||||
|
||||
authenticate with 00:23:69:aa:dd:7b (try 1)
|
||||
authenticated
|
||||
failed to insert Dummy STA entry for the AP (error -17)
|
||||
deauthenticating from 00:23:69:aa:dd:7b by local choice (reason=2)
|
||||
|
||||
It could also happen differently if the driver
|
||||
uses the tx_sync callback.
|
||||
|
||||
We can't just call the ->done() method of the work
|
||||
items because that will lock up due to the locking
|
||||
in cfg80211. This fix isn't very clean, but that
|
||||
seems acceptable since I have patches pending to
|
||||
remove this code completely.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Reported-by: Pontus Fuchs <pontus.fuchs@gmail.com>
|
||||
Tested-by: Pontus Fuchs <pontus.fuchs@gmail.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
net/mac80211/mlme.c | 38 +++++++++++++++++++++++++++-----------
|
||||
1 files changed, 27 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
|
||||
index ecb4c84..295be92 100644
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
||||
- struct ieee80211_work *wk;
|
||||
u8 bssid[ETH_ALEN];
|
||||
bool assoc_bss = false;
|
||||
|
||||
@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
|
||||
assoc_bss = true;
|
||||
} else {
|
||||
bool not_auth_yet = false;
|
||||
+ struct ieee80211_work *tmp, *wk = NULL;
|
||||
|
||||
mutex_unlock(&ifmgd->mtx);
|
||||
|
||||
mutex_lock(&local->mtx);
|
||||
- list_for_each_entry(wk, &local->work_list, list) {
|
||||
- if (wk->sdata != sdata)
|
||||
+ list_for_each_entry(tmp, &local->work_list, list) {
|
||||
+ if (tmp->sdata != sdata)
|
||||
continue;
|
||||
|
||||
- if (wk->type != IEEE80211_WORK_DIRECT_PROBE &&
|
||||
- wk->type != IEEE80211_WORK_AUTH &&
|
||||
- wk->type != IEEE80211_WORK_ASSOC &&
|
||||
- wk->type != IEEE80211_WORK_ASSOC_BEACON_WAIT)
|
||||
+ if (tmp->type != IEEE80211_WORK_DIRECT_PROBE &&
|
||||
+ tmp->type != IEEE80211_WORK_AUTH &&
|
||||
+ tmp->type != IEEE80211_WORK_ASSOC &&
|
||||
+ tmp->type != IEEE80211_WORK_ASSOC_BEACON_WAIT)
|
||||
continue;
|
||||
|
||||
- if (memcmp(req->bss->bssid, wk->filter_ta, ETH_ALEN))
|
||||
+ if (memcmp(req->bss->bssid, tmp->filter_ta, ETH_ALEN))
|
||||
continue;
|
||||
|
||||
- not_auth_yet = wk->type == IEEE80211_WORK_DIRECT_PROBE;
|
||||
- list_del_rcu(&wk->list);
|
||||
- free_work(wk);
|
||||
+ not_auth_yet = tmp->type == IEEE80211_WORK_DIRECT_PROBE;
|
||||
+ list_del_rcu(&tmp->list);
|
||||
+ synchronize_rcu();
|
||||
+ wk = tmp;
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&local->mtx);
|
||||
|
||||
+ if (wk && wk->type == IEEE80211_WORK_ASSOC) {
|
||||
+ /* clean up dummy sta & TX sync */
|
||||
+ sta_info_destroy_addr(wk->sdata, wk->filter_ta);
|
||||
+ if (wk->assoc.synced)
|
||||
+ drv_finish_tx_sync(local, wk->sdata,
|
||||
+ wk->filter_ta,
|
||||
+ IEEE80211_TX_SYNC_ASSOC);
|
||||
+ } else if (wk && wk->type == IEEE80211_WORK_AUTH) {
|
||||
+ if (wk->probe_auth.synced)
|
||||
+ drv_finish_tx_sync(local, wk->sdata,
|
||||
+ wk->filter_ta,
|
||||
+ IEEE80211_TX_SYNC_AUTH);
|
||||
+ }
|
||||
+ kfree(wk);
|
||||
+
|
||||
/*
|
||||
* If somebody requests authentication and we haven't
|
||||
* sent out an auth frame yet there's no need to send
|
||||
--
|
||||
1.7.4.4
|
||||
|
|
@ -1,632 +0,0 @@
|
|||
commit cf778b00e96df6d64f8e21b8395d1f8a859ecdc7
|
||||
Author: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Date: Thu Jan 12 04:41:32 2012 +0000
|
||||
|
||||
net: reintroduce missing rcu_assign_pointer() calls
|
||||
|
||||
commit a9b3cd7f32 (rcu: convert uses of rcu_assign_pointer(x, NULL) to
|
||||
RCU_INIT_POINTER) did a lot of incorrect changes, since it did a
|
||||
complete conversion of rcu_assign_pointer(x, y) to RCU_INIT_POINTER(x,
|
||||
y).
|
||||
|
||||
We miss needed barriers, even on x86, when y is not NULL.
|
||||
|
||||
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
CC: Stephen Hemminger <shemminger@vyatta.com>
|
||||
CC: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/core/netpoll.c linux-3.2.net/net/core/netpoll.c
|
||||
--- linux-3.2.noarch/net/core/netpoll.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/core/netpoll.c 2012-01-20 16:50:26.761797929 -0500
|
||||
@@ -763,7 +763,7 @@ int __netpoll_setup(struct netpoll *np)
|
||||
}
|
||||
|
||||
/* last thing to do is link it to the net device structure */
|
||||
- RCU_INIT_POINTER(ndev->npinfo, npinfo);
|
||||
+ rcu_assign_pointer(ndev->npinfo, npinfo);
|
||||
|
||||
return 0;
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/core/net-sysfs.c linux-3.2.net/net/core/net-sysfs.c
|
||||
--- linux-3.2.noarch/net/core/net-sysfs.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/core/net-sysfs.c 2012-01-20 16:50:26.730798974 -0500
|
||||
@@ -990,9 +990,9 @@ static ssize_t store_xps_map(struct netd
|
||||
nonempty = 1;
|
||||
}
|
||||
|
||||
- if (nonempty)
|
||||
- RCU_INIT_POINTER(dev->xps_maps, new_dev_maps);
|
||||
- else {
|
||||
+ if (nonempty) {
|
||||
+ rcu_assign_pointer(dev->xps_maps, new_dev_maps);
|
||||
+ } else {
|
||||
kfree(new_dev_maps);
|
||||
RCU_INIT_POINTER(dev->xps_maps, NULL);
|
||||
}
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/decnet/dn_dev.c linux-3.2.net/net/decnet/dn_dev.c
|
||||
--- linux-3.2.noarch/net/decnet/dn_dev.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/decnet/dn_dev.c 2012-01-20 16:50:26.793796851 -0500
|
||||
@@ -388,7 +388,7 @@ static int dn_dev_insert_ifa(struct dn_d
|
||||
}
|
||||
|
||||
ifa->ifa_next = dn_db->ifa_list;
|
||||
- RCU_INIT_POINTER(dn_db->ifa_list, ifa);
|
||||
+ rcu_assign_pointer(dn_db->ifa_list, ifa);
|
||||
|
||||
dn_ifaddr_notify(RTM_NEWADDR, ifa);
|
||||
blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa);
|
||||
@@ -1093,7 +1093,7 @@ static struct dn_dev *dn_dev_create(stru
|
||||
|
||||
memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms));
|
||||
|
||||
- RCU_INIT_POINTER(dev->dn_ptr, dn_db);
|
||||
+ rcu_assign_pointer(dev->dn_ptr, dn_db);
|
||||
dn_db->dev = dev;
|
||||
init_timer(&dn_db->timer);
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/devinet.c linux-3.2.net/net/ipv4/devinet.c
|
||||
--- linux-3.2.noarch/net/ipv4/devinet.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv4/devinet.c 2012-01-20 16:50:26.829795637 -0500
|
||||
@@ -258,7 +258,7 @@ static struct in_device *inetdev_init(st
|
||||
ip_mc_up(in_dev);
|
||||
|
||||
/* we can receive as soon as ip_ptr is set -- do this last */
|
||||
- RCU_INIT_POINTER(dev->ip_ptr, in_dev);
|
||||
+ rcu_assign_pointer(dev->ip_ptr, in_dev);
|
||||
out:
|
||||
return in_dev;
|
||||
out_kfree:
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/fib_trie.c linux-3.2.net/net/ipv4/fib_trie.c
|
||||
--- linux-3.2.noarch/net/ipv4/fib_trie.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv4/fib_trie.c 2012-01-20 16:50:26.865794425 -0500
|
||||
@@ -205,7 +205,7 @@ static inline struct tnode *node_parent_
|
||||
return (struct tnode *)(parent & ~NODE_TYPE_MASK);
|
||||
}
|
||||
|
||||
-/* Same as RCU_INIT_POINTER
|
||||
+/* Same as rcu_assign_pointer
|
||||
* but that macro() assumes that value is a pointer.
|
||||
*/
|
||||
static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr)
|
||||
@@ -529,7 +529,7 @@ static void tnode_put_child_reorg(struct
|
||||
if (n)
|
||||
node_set_parent(n, tn);
|
||||
|
||||
- RCU_INIT_POINTER(tn->child[i], n);
|
||||
+ rcu_assign_pointer(tn->child[i], n);
|
||||
}
|
||||
|
||||
#define MAX_WORK 10
|
||||
@@ -1015,7 +1015,7 @@ static void trie_rebalance(struct trie *
|
||||
|
||||
tp = node_parent((struct rt_trie_node *) tn);
|
||||
if (!tp)
|
||||
- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
|
||||
+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
|
||||
|
||||
tnode_free_flush();
|
||||
if (!tp)
|
||||
@@ -1027,7 +1027,7 @@ static void trie_rebalance(struct trie *
|
||||
if (IS_TNODE(tn))
|
||||
tn = (struct tnode *)resize(t, (struct tnode *)tn);
|
||||
|
||||
- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
|
||||
+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
|
||||
tnode_free_flush();
|
||||
}
|
||||
|
||||
@@ -1164,7 +1164,7 @@ static struct list_head *fib_insert_node
|
||||
put_child(t, (struct tnode *)tp, cindex,
|
||||
(struct rt_trie_node *)tn);
|
||||
} else {
|
||||
- RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
|
||||
+ rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
|
||||
tp = tn;
|
||||
}
|
||||
}
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/igmp.c linux-3.2.net/net/ipv4/igmp.c
|
||||
--- linux-3.2.noarch/net/ipv4/igmp.c 2012-01-20 16:22:44.923961882 -0500
|
||||
+++ linux-3.2.net/net/ipv4/igmp.c 2012-01-20 16:50:26.898793315 -0500
|
||||
@@ -1244,7 +1244,7 @@ void ip_mc_inc_group(struct in_device *i
|
||||
|
||||
im->next_rcu = in_dev->mc_list;
|
||||
in_dev->mc_count++;
|
||||
- RCU_INIT_POINTER(in_dev->mc_list, im);
|
||||
+ rcu_assign_pointer(in_dev->mc_list, im);
|
||||
|
||||
#ifdef CONFIG_IP_MULTICAST
|
||||
igmpv3_del_delrec(in_dev, im->multiaddr);
|
||||
@@ -1816,7 +1816,7 @@ int ip_mc_join_group(struct sock *sk , s
|
||||
iml->next_rcu = inet->mc_list;
|
||||
iml->sflist = NULL;
|
||||
iml->sfmode = MCAST_EXCLUDE;
|
||||
- RCU_INIT_POINTER(inet->mc_list, iml);
|
||||
+ rcu_assign_pointer(inet->mc_list, iml);
|
||||
ip_mc_inc_group(in_dev, addr);
|
||||
err = 0;
|
||||
done:
|
||||
@@ -2003,7 +2003,7 @@ int ip_mc_source(int add, int omode, str
|
||||
atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc);
|
||||
kfree_rcu(psl, rcu);
|
||||
}
|
||||
- RCU_INIT_POINTER(pmc->sflist, newpsl);
|
||||
+ rcu_assign_pointer(pmc->sflist, newpsl);
|
||||
psl = newpsl;
|
||||
}
|
||||
rv = 1; /* > 0 for insert logic below if sl_count is 0 */
|
||||
@@ -2106,7 +2106,7 @@ int ip_mc_msfilter(struct sock *sk, stru
|
||||
} else
|
||||
(void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
|
||||
0, NULL, 0);
|
||||
- RCU_INIT_POINTER(pmc->sflist, newpsl);
|
||||
+ rcu_assign_pointer(pmc->sflist, newpsl);
|
||||
pmc->sfmode = msf->imsf_fmode;
|
||||
err = 0;
|
||||
done:
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/ipip.c linux-3.2.net/net/ipv4/ipip.c
|
||||
--- linux-3.2.noarch/net/ipv4/ipip.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv4/ipip.c 2012-01-20 16:50:26.916792707 -0500
|
||||
@@ -231,7 +231,7 @@ static void ipip_tunnel_unlink(struct ip
|
||||
(iter = rtnl_dereference(*tp)) != NULL;
|
||||
tp = &iter->next) {
|
||||
if (t == iter) {
|
||||
- RCU_INIT_POINTER(*tp, t->next);
|
||||
+ rcu_assign_pointer(*tp, t->next);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -241,8 +241,8 @@ static void ipip_tunnel_link(struct ipip
|
||||
{
|
||||
struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t);
|
||||
|
||||
- RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
|
||||
- RCU_INIT_POINTER(*tp, t);
|
||||
+ rcu_assign_pointer(t->next, rtnl_dereference(*tp));
|
||||
+ rcu_assign_pointer(*tp, t);
|
||||
}
|
||||
|
||||
static struct ip_tunnel * ipip_tunnel_locate(struct net *net,
|
||||
@@ -792,7 +792,7 @@ static int __net_init ipip_fb_tunnel_ini
|
||||
return -ENOMEM;
|
||||
|
||||
dev_hold(dev);
|
||||
- RCU_INIT_POINTER(ipn->tunnels_wc[0], tunnel);
|
||||
+ rcu_assign_pointer(ipn->tunnels_wc[0], tunnel);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/ipmr.c linux-3.2.net/net/ipv4/ipmr.c
|
||||
--- linux-3.2.noarch/net/ipv4/ipmr.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv4/ipmr.c 2012-01-20 16:50:26.946791698 -0500
|
||||
@@ -1225,7 +1225,7 @@ int ip_mroute_setsockopt(struct sock *sk
|
||||
|
||||
ret = ip_ra_control(sk, 1, mrtsock_destruct);
|
||||
if (ret == 0) {
|
||||
- RCU_INIT_POINTER(mrt->mroute_sk, sk);
|
||||
+ rcu_assign_pointer(mrt->mroute_sk, sk);
|
||||
IPV4_DEVCONF_ALL(net, MC_FORWARDING)++;
|
||||
}
|
||||
rtnl_unlock();
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/addrconf.c linux-3.2.net/net/ipv6/addrconf.c
|
||||
--- linux-3.2.noarch/net/ipv6/addrconf.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv6/addrconf.c 2012-01-20 16:50:26.977790653 -0500
|
||||
@@ -429,7 +429,7 @@ static struct inet6_dev * ipv6_add_dev(s
|
||||
ndev->tstamp = jiffies;
|
||||
addrconf_sysctl_register(ndev);
|
||||
/* protected by rtnl_lock */
|
||||
- RCU_INIT_POINTER(dev->ip6_ptr, ndev);
|
||||
+ rcu_assign_pointer(dev->ip6_ptr, ndev);
|
||||
|
||||
/* Join all-node multicast group */
|
||||
ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/ip6_tunnel.c linux-3.2.net/net/ipv6/ip6_tunnel.c
|
||||
--- linux-3.2.noarch/net/ipv6/ip6_tunnel.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv6/ip6_tunnel.c 2012-01-20 16:50:27.004789743 -0500
|
||||
@@ -218,8 +218,8 @@ ip6_tnl_link(struct ip6_tnl_net *ip6n, s
|
||||
{
|
||||
struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms);
|
||||
|
||||
- RCU_INIT_POINTER(t->next , rtnl_dereference(*tp));
|
||||
- RCU_INIT_POINTER(*tp, t);
|
||||
+ rcu_assign_pointer(t->next , rtnl_dereference(*tp));
|
||||
+ rcu_assign_pointer(*tp, t);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,7 +237,7 @@ ip6_tnl_unlink(struct ip6_tnl_net *ip6n,
|
||||
(iter = rtnl_dereference(*tp)) != NULL;
|
||||
tp = &iter->next) {
|
||||
if (t == iter) {
|
||||
- RCU_INIT_POINTER(*tp, t->next);
|
||||
+ rcu_assign_pointer(*tp, t->next);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1450,7 +1450,7 @@ static int __net_init ip6_fb_tnl_dev_ini
|
||||
|
||||
t->parms.proto = IPPROTO_IPV6;
|
||||
dev_hold(dev);
|
||||
- RCU_INIT_POINTER(ip6n->tnls_wc[0], t);
|
||||
+ rcu_assign_pointer(ip6n->tnls_wc[0], t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/raw.c linux-3.2.net/net/ipv6/raw.c
|
||||
--- linux-3.2.noarch/net/ipv6/raw.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv6/raw.c 2012-01-20 16:50:27.022789138 -0500
|
||||
@@ -131,7 +131,7 @@ static mh_filter_t __rcu *mh_filter __re
|
||||
|
||||
int rawv6_mh_filter_register(mh_filter_t filter)
|
||||
{
|
||||
- RCU_INIT_POINTER(mh_filter, filter);
|
||||
+ rcu_assign_pointer(mh_filter, filter);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(rawv6_mh_filter_register);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/sit.c linux-3.2.net/net/ipv6/sit.c
|
||||
--- linux-3.2.noarch/net/ipv6/sit.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/ipv6/sit.c 2012-01-20 16:50:27.042788464 -0500
|
||||
@@ -182,7 +182,7 @@ static void ipip6_tunnel_unlink(struct s
|
||||
(iter = rtnl_dereference(*tp)) != NULL;
|
||||
tp = &iter->next) {
|
||||
if (t == iter) {
|
||||
- RCU_INIT_POINTER(*tp, t->next);
|
||||
+ rcu_assign_pointer(*tp, t->next);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -192,8 +192,8 @@ static void ipip6_tunnel_link(struct sit
|
||||
{
|
||||
struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t);
|
||||
|
||||
- RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
|
||||
- RCU_INIT_POINTER(*tp, t);
|
||||
+ rcu_assign_pointer(t->next, rtnl_dereference(*tp));
|
||||
+ rcu_assign_pointer(*tp, t);
|
||||
}
|
||||
|
||||
static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn)
|
||||
@@ -393,7 +393,7 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t
|
||||
p->addr = a->addr;
|
||||
p->flags = a->flags;
|
||||
t->prl_count++;
|
||||
- RCU_INIT_POINTER(t->prl, p);
|
||||
+ rcu_assign_pointer(t->prl, p);
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
@@ -1177,7 +1177,7 @@ static int __net_init ipip6_fb_tunnel_in
|
||||
if (!dev->tstats)
|
||||
return -ENOMEM;
|
||||
dev_hold(dev);
|
||||
- RCU_INIT_POINTER(sitn->tunnels_wc[0], tunnel);
|
||||
+ rcu_assign_pointer(sitn->tunnels_wc[0], tunnel);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/agg-rx.c linux-3.2.net/net/mac80211/agg-rx.c
|
||||
--- linux-3.2.noarch/net/mac80211/agg-rx.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/mac80211/agg-rx.c 2012-01-20 16:50:27.058787924 -0500
|
||||
@@ -326,7 +326,7 @@ void ieee80211_process_addba_request(str
|
||||
status = WLAN_STATUS_SUCCESS;
|
||||
|
||||
/* activate it for RX */
|
||||
- RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx);
|
||||
+ rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx);
|
||||
|
||||
if (timeout)
|
||||
mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout));
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/cfg.c linux-3.2.net/net/mac80211/cfg.c
|
||||
--- linux-3.2.noarch/net/mac80211/cfg.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/mac80211/cfg.c 2012-01-20 16:50:27.082787116 -0500
|
||||
@@ -575,7 +575,7 @@ static int ieee80211_config_beacon(struc
|
||||
|
||||
sdata->vif.bss_conf.dtim_period = new->dtim_period;
|
||||
|
||||
- RCU_INIT_POINTER(sdata->u.ap.beacon, new);
|
||||
+ rcu_assign_pointer(sdata->u.ap.beacon, new);
|
||||
|
||||
synchronize_rcu();
|
||||
|
||||
@@ -922,7 +922,7 @@ static int ieee80211_change_station(stru
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
- RCU_INIT_POINTER(vlansdata->u.vlan.sta, sta);
|
||||
+ rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
}
|
||||
|
||||
sta->sdata = vlansdata;
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/ibss.c linux-3.2.net/net/mac80211/ibss.c
|
||||
--- linux-3.2.noarch/net/mac80211/ibss.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/mac80211/ibss.c 2012-01-20 16:50:27.102786444 -0500
|
||||
@@ -184,7 +184,7 @@ static void __ieee80211_sta_join_ibss(st
|
||||
*pos++ = 0; /* U-APSD no in use */
|
||||
}
|
||||
|
||||
- RCU_INIT_POINTER(ifibss->presp, skb);
|
||||
+ rcu_assign_pointer(ifibss->presp, skb);
|
||||
|
||||
sdata->vif.bss_conf.beacon_int = beacon_int;
|
||||
sdata->vif.bss_conf.basic_rates = basic_rates;
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/sta_info.c linux-3.2.net/net/mac80211/sta_info.c
|
||||
--- linux-3.2.noarch/net/mac80211/sta_info.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/mac80211/sta_info.c 2012-01-20 16:50:27.131785466 -0500
|
||||
@@ -73,7 +73,7 @@ static int sta_info_hash_del(struct ieee
|
||||
if (!s)
|
||||
return -ENOENT;
|
||||
if (s == sta) {
|
||||
- RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)],
|
||||
+ rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)],
|
||||
s->hnext);
|
||||
return 0;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ static int sta_info_hash_del(struct ieee
|
||||
s = rcu_dereference_protected(s->hnext,
|
||||
lockdep_is_held(&local->sta_lock));
|
||||
if (rcu_access_pointer(s->hnext)) {
|
||||
- RCU_INIT_POINTER(s->hnext, sta->hnext);
|
||||
+ rcu_assign_pointer(s->hnext, sta->hnext);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ static void sta_info_hash_add(struct iee
|
||||
struct sta_info *sta)
|
||||
{
|
||||
sta->hnext = local->sta_hash[STA_HASH(sta->sta.addr)];
|
||||
- RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], sta);
|
||||
+ rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], sta);
|
||||
}
|
||||
|
||||
static void sta_unblock(struct work_struct *wk)
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_core.c linux-3.2.net/net/netfilter/nf_conntrack_core.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_conntrack_core.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_conntrack_core.c 2012-01-20 16:50:27.169784186 -0500
|
||||
@@ -776,7 +776,7 @@ init_conntrack(struct net *net, struct n
|
||||
if (exp->helper) {
|
||||
help = nf_ct_helper_ext_add(ct, GFP_ATOMIC);
|
||||
if (help)
|
||||
- RCU_INIT_POINTER(help->helper, exp->helper);
|
||||
+ rcu_assign_pointer(help->helper, exp->helper);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NF_CONNTRACK_MARK
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_ecache.c linux-3.2.net/net/netfilter/nf_conntrack_ecache.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_conntrack_ecache.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_conntrack_ecache.c 2012-01-20 16:50:27.187783578 -0500
|
||||
@@ -91,7 +91,7 @@ int nf_conntrack_register_notifier(struc
|
||||
ret = -EBUSY;
|
||||
goto out_unlock;
|
||||
}
|
||||
- RCU_INIT_POINTER(net->ct.nf_conntrack_event_cb, new);
|
||||
+ rcu_assign_pointer(net->ct.nf_conntrack_event_cb, new);
|
||||
mutex_unlock(&nf_ct_ecache_mutex);
|
||||
return ret;
|
||||
|
||||
@@ -128,7 +128,7 @@ int nf_ct_expect_register_notifier(struc
|
||||
ret = -EBUSY;
|
||||
goto out_unlock;
|
||||
}
|
||||
- RCU_INIT_POINTER(net->ct.nf_expect_event_cb, new);
|
||||
+ rcu_assign_pointer(net->ct.nf_expect_event_cb, new);
|
||||
mutex_unlock(&nf_ct_ecache_mutex);
|
||||
return ret;
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_extend.c linux-3.2.net/net/netfilter/nf_conntrack_extend.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_conntrack_extend.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_conntrack_extend.c 2012-01-20 16:50:27.204783008 -0500
|
||||
@@ -169,7 +169,7 @@ int nf_ct_extend_register(struct nf_ct_e
|
||||
before updating alloc_size */
|
||||
type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align)
|
||||
+ type->len;
|
||||
- RCU_INIT_POINTER(nf_ct_ext_types[type->id], type);
|
||||
+ rcu_assign_pointer(nf_ct_ext_types[type->id], type);
|
||||
update_alloc_size(type);
|
||||
out:
|
||||
mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_helper.c linux-3.2.net/net/netfilter/nf_conntrack_helper.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_conntrack_helper.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_conntrack_helper.c 2012-01-20 16:50:27.227782232 -0500
|
||||
@@ -145,7 +145,7 @@ int __nf_ct_try_assign_helper(struct nf_
|
||||
memset(&help->help, 0, sizeof(help->help));
|
||||
}
|
||||
|
||||
- RCU_INIT_POINTER(help->helper, helper);
|
||||
+ rcu_assign_pointer(help->helper, helper);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_netlink.c linux-3.2.net/net/netfilter/nf_conntrack_netlink.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_conntrack_netlink.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_conntrack_netlink.c 2012-01-20 16:50:27.271780750 -0500
|
||||
@@ -1163,7 +1163,7 @@ ctnetlink_change_helper(struct nf_conn *
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
- RCU_INIT_POINTER(help->helper, helper);
|
||||
+ rcu_assign_pointer(help->helper, helper);
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_log.c linux-3.2.net/net/netfilter/nf_log.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_log.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_log.c 2012-01-20 16:50:27.280780448 -0500
|
||||
@@ -55,7 +55,7 @@ int nf_log_register(u_int8_t pf, struct
|
||||
llog = rcu_dereference_protected(nf_loggers[pf],
|
||||
lockdep_is_held(&nf_log_mutex));
|
||||
if (llog == NULL)
|
||||
- RCU_INIT_POINTER(nf_loggers[pf], logger);
|
||||
+ rcu_assign_pointer(nf_loggers[pf], logger);
|
||||
}
|
||||
|
||||
mutex_unlock(&nf_log_mutex);
|
||||
@@ -92,7 +92,7 @@ int nf_log_bind_pf(u_int8_t pf, const st
|
||||
mutex_unlock(&nf_log_mutex);
|
||||
return -ENOENT;
|
||||
}
|
||||
- RCU_INIT_POINTER(nf_loggers[pf], logger);
|
||||
+ rcu_assign_pointer(nf_loggers[pf], logger);
|
||||
mutex_unlock(&nf_log_mutex);
|
||||
return 0;
|
||||
}
|
||||
@@ -250,7 +250,7 @@ static int nf_log_proc_dostring(ctl_tabl
|
||||
mutex_unlock(&nf_log_mutex);
|
||||
return -ENOENT;
|
||||
}
|
||||
- RCU_INIT_POINTER(nf_loggers[tindex], logger);
|
||||
+ rcu_assign_pointer(nf_loggers[tindex], logger);
|
||||
mutex_unlock(&nf_log_mutex);
|
||||
} else {
|
||||
mutex_lock(&nf_log_mutex);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nfnetlink.c linux-3.2.net/net/netfilter/nfnetlink.c
|
||||
--- linux-3.2.noarch/net/netfilter/nfnetlink.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nfnetlink.c 2012-01-20 16:50:27.302779705 -0500
|
||||
@@ -59,7 +59,7 @@ int nfnetlink_subsys_register(const stru
|
||||
nfnl_unlock();
|
||||
return -EBUSY;
|
||||
}
|
||||
- RCU_INIT_POINTER(subsys_table[n->subsys_id], n);
|
||||
+ rcu_assign_pointer(subsys_table[n->subsys_id], n);
|
||||
nfnl_unlock();
|
||||
|
||||
return 0;
|
||||
@@ -210,7 +210,7 @@ static int __net_init nfnetlink_net_init
|
||||
if (!nfnl)
|
||||
return -ENOMEM;
|
||||
net->nfnl_stash = nfnl;
|
||||
- RCU_INIT_POINTER(net->nfnl, nfnl);
|
||||
+ rcu_assign_pointer(net->nfnl, nfnl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_queue.c linux-3.2.net/net/netfilter/nf_queue.c
|
||||
--- linux-3.2.noarch/net/netfilter/nf_queue.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netfilter/nf_queue.c 2012-01-20 16:50:27.293780010 -0500
|
||||
@@ -40,7 +40,7 @@ int nf_register_queue_handler(u_int8_t p
|
||||
else if (old)
|
||||
ret = -EBUSY;
|
||||
else {
|
||||
- RCU_INIT_POINTER(queue_handler[pf], qh);
|
||||
+ rcu_assign_pointer(queue_handler[pf], qh);
|
||||
ret = 0;
|
||||
}
|
||||
mutex_unlock(&queue_handler_mutex);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netlabel/netlabel_domainhash.c linux-3.2.net/net/netlabel/netlabel_domainhash.c
|
||||
--- linux-3.2.noarch/net/netlabel/netlabel_domainhash.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netlabel/netlabel_domainhash.c 2012-01-20 16:50:27.311779402 -0500
|
||||
@@ -282,7 +282,7 @@ int __init netlbl_domhsh_init(u32 size)
|
||||
INIT_LIST_HEAD(&hsh_tbl->tbl[iter]);
|
||||
|
||||
spin_lock(&netlbl_domhsh_lock);
|
||||
- RCU_INIT_POINTER(netlbl_domhsh, hsh_tbl);
|
||||
+ rcu_assign_pointer(netlbl_domhsh, hsh_tbl);
|
||||
spin_unlock(&netlbl_domhsh_lock);
|
||||
|
||||
return 0;
|
||||
@@ -330,7 +330,7 @@ int netlbl_domhsh_add(struct netlbl_dom_
|
||||
&rcu_dereference(netlbl_domhsh)->tbl[bkt]);
|
||||
} else {
|
||||
INIT_LIST_HEAD(&entry->list);
|
||||
- RCU_INIT_POINTER(netlbl_domhsh_def, entry);
|
||||
+ rcu_assign_pointer(netlbl_domhsh_def, entry);
|
||||
}
|
||||
|
||||
if (entry->type == NETLBL_NLTYPE_ADDRSELECT) {
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netlabel/netlabel_unlabeled.c linux-3.2.net/net/netlabel/netlabel_unlabeled.c
|
||||
--- linux-3.2.noarch/net/netlabel/netlabel_unlabeled.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/netlabel/netlabel_unlabeled.c 2012-01-20 16:50:27.327778863 -0500
|
||||
@@ -354,7 +354,7 @@ static struct netlbl_unlhsh_iface *netlb
|
||||
INIT_LIST_HEAD(&iface->list);
|
||||
if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL)
|
||||
goto add_iface_failure;
|
||||
- RCU_INIT_POINTER(netlbl_unlhsh_def, iface);
|
||||
+ rcu_assign_pointer(netlbl_unlhsh_def, iface);
|
||||
}
|
||||
spin_unlock(&netlbl_unlhsh_lock);
|
||||
|
||||
@@ -1447,11 +1447,9 @@ int __init netlbl_unlabel_init(u32 size)
|
||||
for (iter = 0; iter < hsh_tbl->size; iter++)
|
||||
INIT_LIST_HEAD(&hsh_tbl->tbl[iter]);
|
||||
|
||||
- rcu_read_lock();
|
||||
spin_lock(&netlbl_unlhsh_lock);
|
||||
- RCU_INIT_POINTER(netlbl_unlhsh, hsh_tbl);
|
||||
+ rcu_assign_pointer(netlbl_unlhsh, hsh_tbl);
|
||||
spin_unlock(&netlbl_unlhsh_lock);
|
||||
- rcu_read_unlock();
|
||||
|
||||
register_netdevice_notifier(&netlbl_unlhsh_netdev_notifier);
|
||||
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/af_phonet.c linux-3.2.net/net/phonet/af_phonet.c
|
||||
--- linux-3.2.noarch/net/phonet/af_phonet.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/phonet/af_phonet.c 2012-01-20 16:50:27.345778258 -0500
|
||||
@@ -480,7 +480,7 @@ int __init_or_module phonet_proto_regist
|
||||
if (proto_tab[protocol])
|
||||
err = -EBUSY;
|
||||
else
|
||||
- RCU_INIT_POINTER(proto_tab[protocol], pp);
|
||||
+ rcu_assign_pointer(proto_tab[protocol], pp);
|
||||
mutex_unlock(&proto_tab_lock);
|
||||
|
||||
return err;
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/pn_dev.c linux-3.2.net/net/phonet/pn_dev.c
|
||||
--- linux-3.2.noarch/net/phonet/pn_dev.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/phonet/pn_dev.c 2012-01-20 16:50:27.353777988 -0500
|
||||
@@ -390,7 +390,7 @@ int phonet_route_add(struct net_device *
|
||||
daddr = daddr >> 2;
|
||||
mutex_lock(&routes->lock);
|
||||
if (routes->table[daddr] == NULL) {
|
||||
- RCU_INIT_POINTER(routes->table[daddr], dev);
|
||||
+ rcu_assign_pointer(routes->table[daddr], dev);
|
||||
dev_hold(dev);
|
||||
err = 0;
|
||||
}
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/socket.c linux-3.2.net/net/phonet/socket.c
|
||||
--- linux-3.2.noarch/net/phonet/socket.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/phonet/socket.c 2012-01-20 16:50:27.365777583 -0500
|
||||
@@ -680,7 +680,7 @@ int pn_sock_bind_res(struct sock *sk, u8
|
||||
mutex_lock(&resource_mutex);
|
||||
if (pnres.sk[res] == NULL) {
|
||||
sock_hold(sk);
|
||||
- RCU_INIT_POINTER(pnres.sk[res], sk);
|
||||
+ rcu_assign_pointer(pnres.sk[res], sk);
|
||||
ret = 0;
|
||||
}
|
||||
mutex_unlock(&resource_mutex);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/socket.c linux-3.2.net/net/socket.c
|
||||
--- linux-3.2.noarch/net/socket.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/socket.c 2012-01-20 16:50:27.410776068 -0500
|
||||
@@ -2472,7 +2472,7 @@ int sock_register(const struct net_proto
|
||||
lockdep_is_held(&net_family_lock)))
|
||||
err = -EEXIST;
|
||||
else {
|
||||
- RCU_INIT_POINTER(net_families[ops->family], ops);
|
||||
+ rcu_assign_pointer(net_families[ops->family], ops);
|
||||
err = 0;
|
||||
}
|
||||
spin_unlock(&net_family_lock);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/sunrpc/auth_gss/auth_gss.c linux-3.2.net/net/sunrpc/auth_gss/auth_gss.c
|
||||
--- linux-3.2.noarch/net/sunrpc/auth_gss/auth_gss.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/sunrpc/auth_gss/auth_gss.c 2012-01-20 16:50:27.428775461 -0500
|
||||
@@ -122,7 +122,7 @@ gss_cred_set_ctx(struct rpc_cred *cred,
|
||||
if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags))
|
||||
return;
|
||||
gss_get_ctx(ctx);
|
||||
- RCU_INIT_POINTER(gss_cred->gc_ctx, ctx);
|
||||
+ rcu_assign_pointer(gss_cred->gc_ctx, ctx);
|
||||
set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags);
|
||||
smp_mb__before_clear_bit();
|
||||
clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags);
|
||||
diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/xfrm/xfrm_user.c linux-3.2.net/net/xfrm/xfrm_user.c
|
||||
--- linux-3.2.noarch/net/xfrm/xfrm_user.c 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.net/net/xfrm/xfrm_user.c 2012-01-20 16:50:27.449774754 -0500
|
||||
@@ -2927,7 +2927,7 @@ static int __net_init xfrm_user_net_init
|
||||
if (nlsk == NULL)
|
||||
return -ENOMEM;
|
||||
net->xfrm.nlsk_stash = nlsk; /* Don't set to NULL */
|
||||
- RCU_INIT_POINTER(net->xfrm.nlsk, nlsk);
|
||||
+ rcu_assign_pointer(net->xfrm.nlsk, nlsk);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
From efc3dbc37412c027e363736b4f4c74ee5e8ecffc Mon Sep 17 00:00:00 2001
|
||||
From: "David S. Miller" <davem@davemloft.net>
|
||||
Date: Tue, 24 Jan 2012 17:03:44 -0500
|
||||
Subject: [PATCH] rds: Make rds_sock_lock BH rather than IRQ safe.
|
||||
|
||||
rds_sock_info() triggers locking warnings because we try to perform a
|
||||
local_bh_enable() (via sock_i_ino()) while hardware interrupts are
|
||||
disabled (via taking rds_sock_lock).
|
||||
|
||||
There is no reason for rds_sock_lock to be a hardware IRQ disabling
|
||||
lock, none of these access paths run in hardware interrupt context.
|
||||
|
||||
Therefore making it a BH disabling lock is safe and sufficient to
|
||||
fix this bug.
|
||||
|
||||
Reported-by: Kumar Sanghvi <kumaras@chelsio.com>
|
||||
Reported-by: Josh Boyer <jwboyer@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/rds/af_rds.c | 20 ++++++++------------
|
||||
1 files changed, 8 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c
|
||||
index bb6ad81..424ff62 100644
|
||||
--- a/net/rds/af_rds.c
|
||||
+++ b/net/rds/af_rds.c
|
||||
@@ -68,7 +68,6 @@ static int rds_release(struct socket *sock)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct rds_sock *rs;
|
||||
- unsigned long flags;
|
||||
|
||||
if (!sk)
|
||||
goto out;
|
||||
@@ -94,10 +93,10 @@ static int rds_release(struct socket *sock)
|
||||
rds_rdma_drop_keys(rs);
|
||||
rds_notify_queue_get(rs, NULL);
|
||||
|
||||
- spin_lock_irqsave(&rds_sock_lock, flags);
|
||||
+ spin_lock_bh(&rds_sock_lock);
|
||||
list_del_init(&rs->rs_item);
|
||||
rds_sock_count--;
|
||||
- spin_unlock_irqrestore(&rds_sock_lock, flags);
|
||||
+ spin_unlock_bh(&rds_sock_lock);
|
||||
|
||||
rds_trans_put(rs->rs_transport);
|
||||
|
||||
@@ -409,7 +408,6 @@ static const struct proto_ops rds_proto_ops = {
|
||||
|
||||
static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
|
||||
{
|
||||
- unsigned long flags;
|
||||
struct rds_sock *rs;
|
||||
|
||||
sock_init_data(sock, sk);
|
||||
@@ -426,10 +424,10 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
|
||||
spin_lock_init(&rs->rs_rdma_lock);
|
||||
rs->rs_rdma_keys = RB_ROOT;
|
||||
|
||||
- spin_lock_irqsave(&rds_sock_lock, flags);
|
||||
+ spin_lock_bh(&rds_sock_lock);
|
||||
list_add_tail(&rs->rs_item, &rds_sock_list);
|
||||
rds_sock_count++;
|
||||
- spin_unlock_irqrestore(&rds_sock_lock, flags);
|
||||
+ spin_unlock_bh(&rds_sock_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -471,12 +469,11 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
|
||||
{
|
||||
struct rds_sock *rs;
|
||||
struct rds_incoming *inc;
|
||||
- unsigned long flags;
|
||||
unsigned int total = 0;
|
||||
|
||||
len /= sizeof(struct rds_info_message);
|
||||
|
||||
- spin_lock_irqsave(&rds_sock_lock, flags);
|
||||
+ spin_lock_bh(&rds_sock_lock);
|
||||
|
||||
list_for_each_entry(rs, &rds_sock_list, rs_item) {
|
||||
read_lock(&rs->rs_recv_lock);
|
||||
@@ -492,7 +489,7 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
|
||||
read_unlock(&rs->rs_recv_lock);
|
||||
}
|
||||
|
||||
- spin_unlock_irqrestore(&rds_sock_lock, flags);
|
||||
+ spin_unlock_bh(&rds_sock_lock);
|
||||
|
||||
lens->nr = total;
|
||||
lens->each = sizeof(struct rds_info_message);
|
||||
@@ -504,11 +501,10 @@ static void rds_sock_info(struct socket *sock, unsigned int len,
|
||||
{
|
||||
struct rds_info_socket sinfo;
|
||||
struct rds_sock *rs;
|
||||
- unsigned long flags;
|
||||
|
||||
len /= sizeof(struct rds_info_socket);
|
||||
|
||||
- spin_lock_irqsave(&rds_sock_lock, flags);
|
||||
+ spin_lock_bh(&rds_sock_lock);
|
||||
|
||||
if (len < rds_sock_count)
|
||||
goto out;
|
||||
@@ -529,7 +525,7 @@ out:
|
||||
lens->nr = rds_sock_count;
|
||||
lens->each = sizeof(struct rds_info_socket);
|
||||
|
||||
- spin_unlock_irqrestore(&rds_sock_lock, flags);
|
||||
+ spin_unlock_bh(&rds_sock_lock);
|
||||
}
|
||||
|
||||
static void rds_exit(void)
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
|
||||
index 1f62723..d32f720 100644
|
||||
--- a/drivers/usb/storage/realtek_cr.c
|
||||
+++ b/drivers/usb/storage/realtek_cr.c
|
||||
@@ -789,7 +789,7 @@ static void rts51x_suspend_timer_fn(unsigned long data)
|
||||
rts51x_set_stat(chip, RTS51X_STAT_SS);
|
||||
/* ignore mass storage interface's children */
|
||||
pm_suspend_ignore_children(&us->pusb_intf->dev, true);
|
||||
- usb_autopm_put_interface(us->pusb_intf);
|
||||
+ usb_autopm_put_interface_async(us->pusb_intf);
|
||||
US_DEBUGP("%s: RTS51X_STAT_SS 01,"
|
||||
"intf->pm_usage_cnt:%d, power.usage:%d\n",
|
||||
__func__,
|
1
sources
1
sources
|
@ -1,3 +1,4 @@
|
|||
364066fa18767ec0ae5f4e4abcf9dc51 linux-3.2.tar.xz
|
||||
8cfe037a7a7a356278ec3638e25ad506 compat-wireless-3.3-rc1-2.tar.bz2
|
||||
5e53edbf75fcaa3a8d1697f3a053102d patch-3.2.2.xz
|
||||
4ffcd30b95b4d2435be40405507319dd patch-3.2.3.xz
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
This patch adds a delay after aborting a command. Some TPMs need
|
||||
this and will not process the subsequent command correctly otherwise.
|
||||
|
||||
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
|
||||
|
||||
--- linux-3.1.noarch/drivers/char/tpm/tpm_tis.c~ 2011-12-20 18:08:01.654464487 -0500
|
||||
+++ linux-3.1.noarch/drivers/char/tpm/tpm_tis.c 2011-12-20 18:08:23.476380364 -0500
|
||||
@@ -432,6 +432,9 @@ static int probe_itpm(struct tpm_chip *c
|
||||
out:
|
||||
itpm = rem_itpm;
|
||||
tpm_tis_ready(chip);
|
||||
+ /* some TPMs need a break here otherwise they will not work
|
||||
+ * correctly on the immediately subsequent command */
|
||||
+ msleep(chip->vendor.timeout_b);
|
||||
release_locality(chip, chip->vendor.locality, 0);
|
||||
|
||||
return rc;
|
Loading…
Reference in New Issue