]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.12-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Feb 2014 21:39:00 +0000 (13:39 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Feb 2014 21:39:00 +0000 (13:39 -0800)
added patches:
ar5523-fix-usb-id-for-gigaset.patch
ath9k-do-not-support-powersave-by-default.patch
ath9k_htc-do-not-support-powersave-by-default.patch
ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch
nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch
s390-dump-fix-dump-memory-detection.patch
s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch

queue-3.12/ar5523-fix-usb-id-for-gigaset.patch [new file with mode: 0644]
queue-3.12/ath9k-do-not-support-powersave-by-default.patch [new file with mode: 0644]
queue-3.12/ath9k_htc-do-not-support-powersave-by-default.patch [new file with mode: 0644]
queue-3.12/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch [new file with mode: 0644]
queue-3.12/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch [new file with mode: 0644]
queue-3.12/s390-dump-fix-dump-memory-detection.patch [new file with mode: 0644]
queue-3.12/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch [new file with mode: 0644]
queue-3.12/series

diff --git a/queue-3.12/ar5523-fix-usb-id-for-gigaset.patch b/queue-3.12/ar5523-fix-usb-id-for-gigaset.patch
new file mode 100644 (file)
index 0000000..b939743
--- /dev/null
@@ -0,0 +1,31 @@
+From 4fcfc7443d072582b5047b8b391d711590e5645c Mon Sep 17 00:00:00 2001
+From: Oleksij Rempel <linux@rempel-privat.de>
+Date: Sun, 2 Feb 2014 10:55:18 +0100
+Subject: ar5523: fix usb id for Gigaset.
+
+From: Oleksij Rempel <linux@rempel-privat.de>
+
+commit 4fcfc7443d072582b5047b8b391d711590e5645c upstream.
+
+Raw id and FW id should be switched.
+
+Tested-by: Oleksij Rempel <linux@rempel-privat.de>
+Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ar5523/ar5523.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ar5523/ar5523.c
++++ b/drivers/net/wireless/ath/ar5523/ar5523.c
+@@ -1764,7 +1764,7 @@ static struct usb_device_id ar5523_id_ta
+       AR5523_DEVICE_UX(0x2001, 0x3a04),       /* Dlink / DWLAG122 */
+       AR5523_DEVICE_UG(0x1690, 0x0712),       /* Gigaset / AR5523 */
+       AR5523_DEVICE_UG(0x1690, 0x0710),       /* Gigaset / SMCWUSBTG */
+-      AR5523_DEVICE_UG(0x129b, 0x160c),       /* Gigaset / USB stick 108
++      AR5523_DEVICE_UG(0x129b, 0x160b),       /* Gigaset / USB stick 108
+                                                  (CyberTAN Technology) */
+       AR5523_DEVICE_UG(0x16ab, 0x7801),       /* Globalsun / AR5523_1 */
+       AR5523_DEVICE_UX(0x16ab, 0x7811),       /* Globalsun / AR5523_2 */
diff --git a/queue-3.12/ath9k-do-not-support-powersave-by-default.patch b/queue-3.12/ath9k-do-not-support-powersave-by-default.patch
new file mode 100644 (file)
index 0000000..01dbf5f
--- /dev/null
@@ -0,0 +1,54 @@
+From 8298383c2cd5a6d0639f1bb1781fba181bd20154 Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Date: Tue, 4 Feb 2014 08:37:53 +0530
+Subject: ath9k: Do not support PowerSave by default
+
+From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+
+commit 8298383c2cd5a6d0639f1bb1781fba181bd20154 upstream.
+
+Even though we make sure PowerSave is not enabled by default
+by disabling the flag, WIPHY_FLAG_PS_ON_BY_DEFAULT on init,
+PS could be enabled by userspace based on various factors
+like battery usage etc. Since PS in ath9k is just broken
+and has been untested for years, remove support for it, but
+allow a user to explicitly enable it using a module parameter.
+
+Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/init.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -57,6 +57,10 @@ static int ath9k_bt_ant_diversity;
+ module_param_named(bt_ant_diversity, ath9k_bt_ant_diversity, int, 0444);
+ MODULE_PARM_DESC(bt_ant_diversity, "Enable WLAN/BT RX antenna diversity");
++static int ath9k_ps_enable;
++module_param_named(ps_enable, ath9k_ps_enable, int, 0444);
++MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave");
++
+ bool is_ath9k_unloaded;
+ /* We use the hw_value as an index into our private channel structure */
+@@ -830,13 +834,15 @@ void ath9k_set_hw_capab(struct ath_softc
+       hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
+               IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
+               IEEE80211_HW_SIGNAL_DBM |
+-              IEEE80211_HW_SUPPORTS_PS |
+               IEEE80211_HW_PS_NULLFUNC_STACK |
+               IEEE80211_HW_SPECTRUM_MGMT |
+               IEEE80211_HW_REPORTS_TX_ACK_STATUS |
+               IEEE80211_HW_SUPPORTS_RC_TABLE |
+               IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
++      if (ath9k_ps_enable)
++              hw->flags |= IEEE80211_HW_SUPPORTS_PS;
++
+       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) {
+               hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
diff --git a/queue-3.12/ath9k_htc-do-not-support-powersave-by-default.patch b/queue-3.12/ath9k_htc-do-not-support-powersave-by-default.patch
new file mode 100644 (file)
index 0000000..7bed294
--- /dev/null
@@ -0,0 +1,55 @@
+From 6bca610d97b6139a1d7598b8009da9d339daa50f Mon Sep 17 00:00:00 2001
+From: Oleksij Rempel <linux@rempel-privat.de>
+Date: Thu, 30 Jan 2014 09:14:53 +0100
+Subject: ath9k_htc: Do not support PowerSave by default
+
+From: Oleksij Rempel <linux@rempel-privat.de>
+
+commit 6bca610d97b6139a1d7598b8009da9d339daa50f upstream.
+
+It is a copy/paste of patch provided by Sujith for ath9k.
+
+"Even though we make sure PowerSave is not enabled by default
+by disabling the flag, WIPHY_FLAG_PS_ON_BY_DEFAULT on init,
+PS could be enabled by userspace based on various factors
+like battery usage etc. Since PS in ath9k is just broken
+and has been untested for years, remove support for it, but
+allow a user to explicitly enable it using a module parameter."
+
+Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/htc_drv_init.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+@@ -34,6 +34,10 @@ static int ath9k_htc_btcoex_enable;
+ module_param_named(btcoex_enable, ath9k_htc_btcoex_enable, int, 0444);
+ MODULE_PARM_DESC(btcoex_enable, "Enable wifi-BT coexistence");
++static int ath9k_ps_enable;
++module_param_named(ps_enable, ath9k_ps_enable, int, 0444);
++MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave");
++
+ #define CHAN2G(_freq, _idx)  { \
+       .center_freq = (_freq), \
+       .hw_value = (_idx), \
+@@ -725,12 +729,14 @@ static void ath9k_set_hw_capab(struct at
+               IEEE80211_HW_SPECTRUM_MGMT |
+               IEEE80211_HW_HAS_RATE_CONTROL |
+               IEEE80211_HW_RX_INCLUDES_FCS |
+-              IEEE80211_HW_SUPPORTS_PS |
+               IEEE80211_HW_PS_NULLFUNC_STACK |
+               IEEE80211_HW_REPORTS_TX_ACK_STATUS |
+               IEEE80211_HW_MFP_CAPABLE |
+               IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING;
++      if (ath9k_ps_enable)
++              hw->flags |= IEEE80211_HW_SUPPORTS_PS;
++
+       hw->wiphy->interface_modes =
+               BIT(NL80211_IFTYPE_STATION) |
+               BIT(NL80211_IFTYPE_ADHOC) |
diff --git a/queue-3.12/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch b/queue-3.12/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch
new file mode 100644 (file)
index 0000000..a9b59d0
--- /dev/null
@@ -0,0 +1,69 @@
+From 2fa4cb905605c863bf570027233af7afd8149ae4 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Tue, 28 Jan 2014 09:14:48 +0100
+Subject: ath9k_htc: make ->sta_rc_update atomic for most calls
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit 2fa4cb905605c863bf570027233af7afd8149ae4 upstream.
+
+sta_rc_update() callback must be atomic, hence we can not take mutexes
+or do other operations, which can sleep in ath9k_htc_sta_rc_update().
+
+I think we can just return from ath9k_htc_sta_rc_update(), if it is
+called without IEEE80211_RC_SUPP_RATES_CHANGED bit. That will help
+with scheduling while atomic bug for most cases (except mesh and IBSS
+modes).
+
+For mesh and IBSS I do not see other solution like creating additional
+workqueue, because sending firmware command require us to sleep, but
+this can be done in additional patch.
+
+Patch partially fixes bug:
+https://bugzilla.redhat.com/show_bug.cgi?id=990955
+
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/htc_drv_main.c |   25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
+@@ -1337,21 +1337,22 @@ static void ath9k_htc_sta_rc_update(stru
+       struct ath_common *common = ath9k_hw_common(priv->ah);
+       struct ath9k_htc_target_rate trate;
++      if (!(changed & IEEE80211_RC_SUPP_RATES_CHANGED))
++              return;
++
+       mutex_lock(&priv->mutex);
+       ath9k_htc_ps_wakeup(priv);
+-      if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
+-              memset(&trate, 0, sizeof(struct ath9k_htc_target_rate));
+-              ath9k_htc_setup_rate(priv, sta, &trate);
+-              if (!ath9k_htc_send_rate_cmd(priv, &trate))
+-                      ath_dbg(common, CONFIG,
+-                              "Supported rates for sta: %pM updated, rate caps: 0x%X\n",
+-                              sta->addr, be32_to_cpu(trate.capflags));
+-              else
+-                      ath_dbg(common, CONFIG,
+-                              "Unable to update supported rates for sta: %pM\n",
+-                              sta->addr);
+-      }
++      memset(&trate, 0, sizeof(struct ath9k_htc_target_rate));
++      ath9k_htc_setup_rate(priv, sta, &trate);
++      if (!ath9k_htc_send_rate_cmd(priv, &trate))
++              ath_dbg(common, CONFIG,
++                      "Supported rates for sta: %pM updated, rate caps: 0x%X\n",
++                      sta->addr, be32_to_cpu(trate.capflags));
++      else
++              ath_dbg(common, CONFIG,
++                      "Unable to update supported rates for sta: %pM\n",
++                      sta->addr);
+       ath9k_htc_ps_restore(priv);
+       mutex_unlock(&priv->mutex);
diff --git a/queue-3.12/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch b/queue-3.12/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch
new file mode 100644 (file)
index 0000000..c0aba36
--- /dev/null
@@ -0,0 +1,40 @@
+From f12cb2893069495726c21a4b0178705dacfecfe0 Mon Sep 17 00:00:00 2001
+From: Pontus Fuchs <pontus.fuchs@gmail.com>
+Date: Thu, 16 Jan 2014 15:00:40 +0100
+Subject: nl80211: Reset split_start when netlink skb is exhausted
+
+From: Pontus Fuchs <pontus.fuchs@gmail.com>
+
+commit f12cb2893069495726c21a4b0178705dacfecfe0 upstream.
+
+When the netlink skb is exhausted split_start is left set. In the
+subsequent retry, with a larger buffer, the dump is continued from the
+failing point instead of from the beginning.
+
+This was causing my rt28xx based USB dongle to now show up when
+running "iw list" with an old iw version without split dump support.
+
+Fixes: 3713b4e364ef ("nl80211: allow splitting wiphy information in dumps")
+Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
+[avoid the entire workaround when state->split is set]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/wireless/nl80211.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -1655,9 +1655,10 @@ static int nl80211_dump_wiphy(struct sk_
+                                * We can then retry with the larger buffer.
+                                */
+                               if ((ret == -ENOBUFS || ret == -EMSGSIZE) &&
+-                                  !skb->len &&
++                                  !skb->len && !state->split &&
+                                   cb->min_dump_alloc < 4096) {
+                                       cb->min_dump_alloc = 4096;
++                                      state->split_start = 0;
+                                       rtnl_unlock();
+                                       return 1;
+                               }
diff --git a/queue-3.12/s390-dump-fix-dump-memory-detection.patch b/queue-3.12/s390-dump-fix-dump-memory-detection.patch
new file mode 100644 (file)
index 0000000..9d36d6c
--- /dev/null
@@ -0,0 +1,62 @@
+From d7736ff5be31edaa4fe5ab62810c64529a24b149 Mon Sep 17 00:00:00 2001
+From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
+Date: Thu, 30 Jan 2014 16:14:02 +0100
+Subject: s390/dump: Fix dump memory detection
+
+From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
+
+commit d7736ff5be31edaa4fe5ab62810c64529a24b149 upstream.
+
+Dumps created by kdump or zfcpdump can contain invalid memory holes when
+dumping z/VM systems that have memory pressure.
+
+For example:
+
+   # zgetdump -i /proc/vmcore.
+   Memory map:
+   0000000000000000 - 0000000000bfffff (12 MB)
+   0000000000e00000 - 00000000014fffff (7 MB)
+   000000000bd00000 - 00000000f3bfffff (3711 MB)
+
+The memory detection function find_memory_chunks() issues tprot to
+find valid memory chunks. In case of CMM it can happen that pages are
+marked as unstable via set_page_unstable() in arch_free_page().
+If z/VM has released that pages, tprot returns -EFAULT and indicates
+a memory hole.
+
+So fix this and switch off CMM in case of kdump or zfcpdump.
+
+Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/s390/mm/page-states.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/arch/s390/mm/page-states.c
++++ b/arch/s390/mm/page-states.c
+@@ -12,6 +12,8 @@
+ #include <linux/mm.h>
+ #include <linux/gfp.h>
+ #include <linux/init.h>
++#include <asm/setup.h>
++#include <asm/ipl.h>
+ #define ESSA_SET_STABLE               1
+ #define ESSA_SET_UNUSED               2
+@@ -41,6 +43,14 @@ void __init cmma_init(void)
+       if (!cmma_flag)
+               return;
++      /*
++       * Disable CMM for dump, otherwise  the tprot based memory
++       * detection can fail because of unstable pages.
++       */
++      if (OLDMEM_BASE || ipl_info.type == IPL_TYPE_FCP_DUMP) {
++              cmma_flag = 0;
++              return;
++      }
+       asm volatile(
+               "       .insn rrf,0xb9ab0000,%1,%1,0,0\n"
+               "0:     la      %0,0\n"
diff --git a/queue-3.12/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch b/queue-3.12/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch
new file mode 100644 (file)
index 0000000..529084d
--- /dev/null
@@ -0,0 +1,55 @@
+From 8d7f6690cedb83456edd41c9bd583783f0703bf0 Mon Sep 17 00:00:00 2001
+From: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Date: Mon, 3 Feb 2014 17:37:15 +0100
+Subject: s390: fix kernel crash due to linkage stack instructions
+
+From: Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+commit 8d7f6690cedb83456edd41c9bd583783f0703bf0 upstream.
+
+The kernel currently crashes with a low-address-protection exception
+if a user space process executes an instruction that tries to use the
+linkage stack. Set the base-ASTE origin and the subspace-ASTE origin
+of the dispatchable-unit-control-table to point to a dummy ASTE.
+Set up control register 15 to point to an empty linkage stack with no
+room left.
+
+A user space process with a linkage stack instruction will still crash
+but with a different exception which is correctly translated to a
+segmentation fault instead of a kernel oops.
+
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/s390/kernel/head64.S |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/arch/s390/kernel/head64.S
++++ b/arch/s390/kernel/head64.S
+@@ -59,7 +59,7 @@ ENTRY(startup_continue)
+       .quad   0                       # cr12: tracing off
+       .quad   0                       # cr13: home space segment table
+       .quad   0xc0000000              # cr14: machine check handling off
+-      .quad   0                       # cr15: linkage stack operations
++      .quad   .Llinkage_stack         # cr15: linkage stack operations
+ .Lpcmsk:.quad 0x0000000180000000
+ .L4malign:.quad 0xffffffffffc00000
+ .Lscan2g:.quad        0x80000000 + 0x20000 - 8        # 2GB + 128K - 8
+@@ -67,12 +67,15 @@ ENTRY(startup_continue)
+ .Lparmaddr:
+       .quad   PARMAREA
+       .align  64
+-.Lduct: .long 0,0,0,0,.Lduald,0,0,0
++.Lduct: .long 0,.Laste,.Laste,0,.Lduald,0,0,0
+       .long   0,0,0,0,0,0,0,0
++.Laste:       .quad   0,0xffffffffffffffff,0,0,0,0,0,0
+       .align  128
+ .Lduald:.rept 8
+       .long   0x80000000,0,0,0        # invalid access-list entries
+       .endr
++.Llinkage_stack:
++      .long   0,0,0x89000000,0,0,0,0x8a000000,0
+ ENTRY(_ehead)
index fcb976a8eb8f8ffd0d6f31e8121ff3068fa915a3..af7a9636ccdaac28d2abcd79b3ac0db3c5d51dbe 100644 (file)
@@ -9,3 +9,10 @@ retrieving-cifs-acls-when-mounted-with-smb2-fails-dropping-session.patch
 mac80211-move-roc-cookie-assignment-earlier.patch
 mac80211-release-the-channel-in-error-path-in-start_ap.patch
 mac80211-fix-fragmentation-code-particularly-for-encryption.patch
+ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch
+ath9k_htc-do-not-support-powersave-by-default.patch
+ath9k-do-not-support-powersave-by-default.patch
+ar5523-fix-usb-id-for-gigaset.patch
+s390-dump-fix-dump-memory-detection.patch
+s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch
+nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch