From 3b6eae8676a6767346cc3cb84bb13cf0c6592a95 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Feb 2014 13:39:04 -0800 Subject: [PATCH] 3.13-stable patches 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 --- .../ar5523-fix-usb-id-for-gigaset.patch | 31 +++++++++ ...-do-not-support-powersave-by-default.patch | 54 +++++++++++++++ ...-do-not-support-powersave-by-default.patch | 55 +++++++++++++++ ...-sta_rc_update-atomic-for-most-calls.patch | 69 +++++++++++++++++++ ..._start-when-netlink-skb-is-exhausted.patch | 40 +++++++++++ .../s390-dump-fix-dump-memory-detection.patch | 62 +++++++++++++++++ ...sh-due-to-linkage-stack-instructions.patch | 55 +++++++++++++++ queue-3.13/series | 7 ++ 8 files changed, 373 insertions(+) create mode 100644 queue-3.13/ar5523-fix-usb-id-for-gigaset.patch create mode 100644 queue-3.13/ath9k-do-not-support-powersave-by-default.patch create mode 100644 queue-3.13/ath9k_htc-do-not-support-powersave-by-default.patch create mode 100644 queue-3.13/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch create mode 100644 queue-3.13/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch create mode 100644 queue-3.13/s390-dump-fix-dump-memory-detection.patch create mode 100644 queue-3.13/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch diff --git a/queue-3.13/ar5523-fix-usb-id-for-gigaset.patch b/queue-3.13/ar5523-fix-usb-id-for-gigaset.patch new file mode 100644 index 00000000000..eac4e3a9944 --- /dev/null +++ b/queue-3.13/ar5523-fix-usb-id-for-gigaset.patch @@ -0,0 +1,31 @@ +From 4fcfc7443d072582b5047b8b391d711590e5645c Mon Sep 17 00:00:00 2001 +From: Oleksij Rempel +Date: Sun, 2 Feb 2014 10:55:18 +0100 +Subject: ar5523: fix usb id for Gigaset. + +From: Oleksij Rempel + +commit 4fcfc7443d072582b5047b8b391d711590e5645c upstream. + +Raw id and FW id should be switched. + +Tested-by: Oleksij Rempel +Signed-off-by: Oleksij Rempel +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -1765,7 +1765,7 @@ static struct usb_device_id ar5523_id_ta + AR5523_DEVICE_UG(0x07d1, 0x3a07), /* D-Link / WUA-2340 rev A1 */ + 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.13/ath9k-do-not-support-powersave-by-default.patch b/queue-3.13/ath9k-do-not-support-powersave-by-default.patch new file mode 100644 index 00000000000..554a002f64f --- /dev/null +++ b/queue-3.13/ath9k-do-not-support-powersave-by-default.patch @@ -0,0 +1,54 @@ +From 8298383c2cd5a6d0639f1bb1781fba181bd20154 Mon Sep 17 00:00:00 2001 +From: Sujith Manoharan +Date: Tue, 4 Feb 2014 08:37:53 +0530 +Subject: ath9k: Do not support PowerSave by default + +From: Sujith Manoharan + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ + +@@ -890,13 +894,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.13/ath9k_htc-do-not-support-powersave-by-default.patch b/queue-3.13/ath9k_htc-do-not-support-powersave-by-default.patch new file mode 100644 index 00000000000..7bed294f075 --- /dev/null +++ b/queue-3.13/ath9k_htc-do-not-support-powersave-by-default.patch @@ -0,0 +1,55 @@ +From 6bca610d97b6139a1d7598b8009da9d339daa50f Mon Sep 17 00:00:00 2001 +From: Oleksij Rempel +Date: Thu, 30 Jan 2014 09:14:53 +0100 +Subject: ath9k_htc: Do not support PowerSave by default + +From: Oleksij Rempel + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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.13/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch b/queue-3.13/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch new file mode 100644 index 00000000000..508db3f458a --- /dev/null +++ b/queue-3.13/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch @@ -0,0 +1,69 @@ +From 2fa4cb905605c863bf570027233af7afd8149ae4 Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka +Date: Tue, 28 Jan 2014 09:14:48 +0100 +Subject: ath9k_htc: make ->sta_rc_update atomic for most calls + +From: Stanislaw Gruszka + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -1315,21 +1315,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.13/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch b/queue-3.13/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch new file mode 100644 index 00000000000..175c63b8bed --- /dev/null +++ b/queue-3.13/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch @@ -0,0 +1,40 @@ +From f12cb2893069495726c21a4b0178705dacfecfe0 Mon Sep 17 00:00:00 2001 +From: Pontus Fuchs +Date: Thu, 16 Jan 2014 15:00:40 +0100 +Subject: nl80211: Reset split_start when netlink skb is exhausted + +From: Pontus Fuchs + +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 +[avoid the entire workaround when state->split is set] +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/wireless/nl80211.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -1677,9 +1677,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.13/s390-dump-fix-dump-memory-detection.patch b/queue-3.13/s390-dump-fix-dump-memory-detection.patch new file mode 100644 index 00000000000..9d36d6c014b --- /dev/null +++ b/queue-3.13/s390-dump-fix-dump-memory-detection.patch @@ -0,0 +1,62 @@ +From d7736ff5be31edaa4fe5ab62810c64529a24b149 Mon Sep 17 00:00:00 2001 +From: Michael Holzheu +Date: Thu, 30 Jan 2014 16:14:02 +0100 +Subject: s390/dump: Fix dump memory detection + +From: Michael Holzheu + +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 +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + 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 + #include + #include ++#include ++#include + + #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.13/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch b/queue-3.13/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch new file mode 100644 index 00000000000..529084de52a --- /dev/null +++ b/queue-3.13/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch @@ -0,0 +1,55 @@ +From 8d7f6690cedb83456edd41c9bd583783f0703bf0 Mon Sep 17 00:00:00 2001 +From: Martin Schwidefsky +Date: Mon, 3 Feb 2014 17:37:15 +0100 +Subject: s390: fix kernel crash due to linkage stack instructions + +From: Martin Schwidefsky + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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) + diff --git a/queue-3.13/series b/queue-3.13/series index 13a041afc78..fd00d481344 100644 --- a/queue-3.13/series +++ b/queue-3.13/series @@ -11,3 +11,10 @@ mac80211-move-roc-cookie-assignment-earlier.patch mac80211-release-the-channel-in-error-path-in-start_ap.patch mac80211-fix-ibss-disconnect.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 -- 2.47.2