From 6d8eefbb611d8d362ab0160ff4f076faea2cff9b Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Fri, 3 Feb 2012 13:27:57 -0500 Subject: [PATCH] Linux 3.2.3 --- kernel.spec | 33 +- ...1-fix-work-removal-on-deauth-request.patch | 109 --- rcu-reintroduce-missing-calls.patch | 632 ------------------ ...ds_sock_lock-BH-rather-than-IRQ-safe.patch | 116 ---- realtek_async_autopm.patch | 13 - sources | 1 + tpm_tis-delay-after-aborting-cmd.patch | 17 - 7 files changed, 5 insertions(+), 916 deletions(-) delete mode 100644 mac80211-fix-work-removal-on-deauth-request.patch delete mode 100644 rcu-reintroduce-missing-calls.patch delete mode 100644 rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch delete mode 100644 realtek_async_autopm.patch delete mode 100644 tpm_tis-delay-after-aborting-cmd.patch diff --git a/kernel.spec b/kernel.spec index 57fa8be39..31ad2d3ef 100644 --- a/kernel.spec +++ b/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 +- Linux 3.2.3 + * Fri Feb 03 2012 Josh Boyer - Patch from Jakub Kicinski to fix rt2x00 MCU requests (rhbz 772772) diff --git a/mac80211-fix-work-removal-on-deauth-request.patch b/mac80211-fix-work-removal-on-deauth-request.patch deleted file mode 100644 index 941b51861..000000000 --- a/mac80211-fix-work-removal-on-deauth-request.patch +++ /dev/null @@ -1,109 +0,0 @@ -From bc4934bc61d0a11fd62c5187ff83645628f8be8b Mon Sep 17 00:00:00 2001 -From: Johannes Berg -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 -Tested-by: Pontus Fuchs -Signed-off-by: Johannes Berg -Signed-off-by: John W. Linville ---- - 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 - diff --git a/rcu-reintroduce-missing-calls.patch b/rcu-reintroduce-missing-calls.patch deleted file mode 100644 index b887df750..000000000 --- a/rcu-reintroduce-missing-calls.patch +++ /dev/null @@ -1,632 +0,0 @@ -commit cf778b00e96df6d64f8e21b8395d1f8a859ecdc7 -Author: Eric Dumazet -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 - CC: Stephen Hemminger - CC: Paul E. McKenney - Signed-off-by: David S. Miller - -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; - } - diff --git a/rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch b/rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch deleted file mode 100644 index 0946aad6b..000000000 --- a/rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch +++ /dev/null @@ -1,116 +0,0 @@ -From efc3dbc37412c027e363736b4f4c74ee5e8ecffc Mon Sep 17 00:00:00 2001 -From: "David S. Miller" -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 -Reported-by: Josh Boyer -Signed-off-by: David S. Miller ---- - 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 - diff --git a/realtek_async_autopm.patch b/realtek_async_autopm.patch deleted file mode 100644 index 3c6b45cca..000000000 --- a/realtek_async_autopm.patch +++ /dev/null @@ -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__, diff --git a/sources b/sources index 66fa5b1a2..312a6a0d7 100644 --- a/sources +++ b/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 diff --git a/tpm_tis-delay-after-aborting-cmd.patch b/tpm_tis-delay-after-aborting-cmd.patch deleted file mode 100644 index 315284f50..000000000 --- a/tpm_tis-delay-after-aborting-cmd.patch +++ /dev/null @@ -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 - ---- 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;