From d8dd4c125ad640ac5fcf17a0724e472034e8d3c3 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Feb 2014 13:38:56 -0800 Subject: [PATCH] 3.10-stable patches added patches: ar5523-fix-usb-id-for-gigaset.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 +++++++++ ...-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.10/series | 5 ++ 6 files changed, 262 insertions(+) create mode 100644 queue-3.10/ar5523-fix-usb-id-for-gigaset.patch create mode 100644 queue-3.10/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch create mode 100644 queue-3.10/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch create mode 100644 queue-3.10/s390-dump-fix-dump-memory-detection.patch create mode 100644 queue-3.10/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch diff --git a/queue-3.10/ar5523-fix-usb-id-for-gigaset.patch b/queue-3.10/ar5523-fix-usb-id-for-gigaset.patch new file mode 100644 index 00000000000..b939743df8f --- /dev/null +++ b/queue-3.10/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 +@@ -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.10/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch b/queue-3.10/ath9k_htc-make-sta_rc_update-atomic-for-most-calls.patch new file mode 100644 index 00000000000..bccbce71393 --- /dev/null +++ b/queue-3.10/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 +@@ -1331,21 +1331,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.10/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch b/queue-3.10/nl80211-reset-split_start-when-netlink-skb-is-exhausted.patch new file mode 100644 index 00000000000..d57292e1ed6 --- /dev/null +++ b/queue-3.10/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 +@@ -1634,9 +1634,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; + mutex_unlock(&cfg80211_mutex); + return 1; + } diff --git a/queue-3.10/s390-dump-fix-dump-memory-detection.patch b/queue-3.10/s390-dump-fix-dump-memory-detection.patch new file mode 100644 index 00000000000..9d36d6c014b --- /dev/null +++ b/queue-3.10/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.10/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch b/queue-3.10/s390-fix-kernel-crash-due-to-linkage-stack-instructions.patch new file mode 100644 index 00000000000..529084de52a --- /dev/null +++ b/queue-3.10/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.10/series b/queue-3.10/series index b65ab145a4e..b1079bd4644 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -9,3 +9,8 @@ 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 +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