]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Mar 2015 13:37:13 +0000 (14:37 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Mar 2015 13:37:13 +0000 (14:37 +0100)
added patches:
asoc-omap-pcm-correct-dma-mask.patch
ath5k-fix-spontaneus-ar5312-freezes.patch
ath6kl-fix-struct-hif_scatter_req-list-handling.patch
clk-gate-fix-bit-check-in-clk_register_gate.patch
nfsv4-don-t-call-put_rpccred-under-the-rcu_read_lock.patch

queue-3.14/asoc-omap-pcm-correct-dma-mask.patch [new file with mode: 0644]
queue-3.14/ath5k-fix-spontaneus-ar5312-freezes.patch [new file with mode: 0644]
queue-3.14/ath6kl-fix-struct-hif_scatter_req-list-handling.patch [new file with mode: 0644]
queue-3.14/clk-gate-fix-bit-check-in-clk_register_gate.patch [new file with mode: 0644]
queue-3.14/nfsv4-don-t-call-put_rpccred-under-the-rcu_read_lock.patch [new file with mode: 0644]
queue-3.14/series

diff --git a/queue-3.14/asoc-omap-pcm-correct-dma-mask.patch b/queue-3.14/asoc-omap-pcm-correct-dma-mask.patch
new file mode 100644 (file)
index 0000000..cd1de62
--- /dev/null
@@ -0,0 +1,37 @@
+From d51199a83a2cf82a291d19ee852c44caa511427d Mon Sep 17 00:00:00 2001
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Date: Tue, 3 Mar 2015 13:38:14 +0200
+Subject: ASoC: omap-pcm: Correct dma mask
+
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+
+commit d51199a83a2cf82a291d19ee852c44caa511427d upstream.
+
+DMA_BIT_MASK of 64 is not valid dma address mask for OMAPs, it should be
+set to 32.
+The 64 was introduced by commit (in 2009):
+a152ff24b978 ASoC: OMAP: Make DMA 64 aligned
+
+But the dma_mask and coherent_dma_mask can not be used to specify alignment.
+
+Fixes: a152ff24b978 (ASoC: OMAP: Make DMA 64 aligned)
+Reported-by: Grygorii Strashko <Grygorii.Strashko@linaro.org>
+Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/omap/omap-pcm.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/omap/omap-pcm.c
++++ b/sound/soc/omap/omap-pcm.c
+@@ -200,7 +200,7 @@ static int omap_pcm_new(struct snd_soc_p
+       struct snd_pcm *pcm = rtd->pcm;
+       int ret;
+-      ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(64));
++      ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32));
+       if (ret)
+               return ret;
diff --git a/queue-3.14/ath5k-fix-spontaneus-ar5312-freezes.patch b/queue-3.14/ath5k-fix-spontaneus-ar5312-freezes.patch
new file mode 100644 (file)
index 0000000..6b21930
--- /dev/null
@@ -0,0 +1,56 @@
+From 8bfae4f9938b6c1f033a5159febe97e441d6d526 Mon Sep 17 00:00:00 2001
+From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+Date: Wed, 4 Feb 2015 00:21:13 +0300
+Subject: ath5k: fix spontaneus AR5312 freezes
+
+From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+
+commit 8bfae4f9938b6c1f033a5159febe97e441d6d526 upstream.
+
+Sometimes while CPU have some load and ath5k doing the wireless
+interface reset the whole WiSoC completely freezes. Set of tests shows
+that using atomic delay function while we wait interface reset helps to
+avoid such freezes.
+
+The easiest way to reproduce this issue: create a station interface,
+start continous scan with wpa_supplicant and load CPU by something. Or
+just create multiple station interfaces and put them all in continous
+scan.
+
+This patch partially reverts the commit 1846ac3dbec0 ("ath5k: Use
+usleep_range where possible"), which replaces initial udelay()
+by usleep_range().
+
+I do not know actual source of this issue, but all looks like that HW
+freeze is caused by transaction on internal SoC bus, while wireless
+block is in reset state.
+
+Also I should note that I do not know how many chips are affected, but I
+did not see this issue with chips, other than AR5312.
+
+CC: Jiri Slaby <jirislaby@gmail.com>
+CC: Nick Kossifidis <mickflemm@gmail.com>
+CC: Luis R. Rodriguez <mcgrof@do-not-panic.com>
+Fixes: 1846ac3dbec0 ("ath5k: Use usleep_range where possible")
+Reported-by: Christophe Prevotaux <c.prevotaux@rural-networks.com>
+Tested-by: Christophe Prevotaux <c.prevotaux@rural-networks.com>
+Tested-by: Eric Bree <ebree@nltinc.com>
+Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath5k/reset.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath5k/reset.c
++++ b/drivers/net/wireless/ath/ath5k/reset.c
+@@ -478,7 +478,7 @@ ath5k_hw_wisoc_reset(struct ath5k_hw *ah
+       regval = ioread32(reg);
+       iowrite32(regval | val, reg);
+       regval = ioread32(reg);
+-      usleep_range(100, 150);
++      udelay(100);    /* NB: should be atomic */
+       /* Bring BB/MAC out of reset */
+       iowrite32(regval & ~val, reg);
diff --git a/queue-3.14/ath6kl-fix-struct-hif_scatter_req-list-handling.patch b/queue-3.14/ath6kl-fix-struct-hif_scatter_req-list-handling.patch
new file mode 100644 (file)
index 0000000..160488a
--- /dev/null
@@ -0,0 +1,129 @@
+From 31b9cc9a873dcab161999622314f98a75d838975 Mon Sep 17 00:00:00 2001
+From: Kalle Valo <kvalo@qca.qualcomm.com>
+Date: Tue, 11 Mar 2014 12:58:00 +0200
+Subject: ath6kl: fix struct hif_scatter_req list handling
+
+From: Kalle Valo <kvalo@qca.qualcomm.com>
+
+commit 31b9cc9a873dcab161999622314f98a75d838975 upstream.
+
+Jason noticed that with Yocto GCC 4.8.1 ath6kl crashes with this iperf command:
+
+iperf -c $TARGET_IP -i 5 -t 50 -w 1M
+
+The crash was:
+
+Unable to handle kernel paging request at virtual address 1a480000
+pgd = 80004000
+[1a480000] *pgd=00000000
+Internal error: Oops: 805 [#1] SMP ARM
+Modules linked in: ath6kl_sdio ath6kl_core [last unloaded: ath6kl_core]
+CPU: 0 PID: 1953 Comm: kworker/u4:0 Not tainted 3.10.9-1.0.0_alpha+dbf364b #1
+Workqueue: ath6kl ath6kl_sdio_write_async_work [ath6kl_sdio]
+task: dcc9a680 ti: dc9ae000 task.ti: dc9ae000
+PC is at v7_dma_clean_range+0x20/0x38
+LR is at dma_cache_maint_page+0x50/0x54
+pc : [<8001a6f8>]    lr : [<800170fc>]    psr: 20000093
+sp : dc9afcf8  ip : 8001a748  fp : 00000004
+r10: 00000000  r9 : 00000001  r8 : 00000000
+r7 : 00000001  r6 : 00000000  r5 : 80cb7000  r4 : 03f9a480
+r3 : 0000001f  r2 : 00000020  r1 : 1a480000  r0 : 1a480000
+Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
+Control: 10c53c7d  Table: 6cc5004a  DAC: 00000015
+Process kworker/u4:0 (pid: 1953, stack limit = 0xdc9ae238)
+Stack: (0xdc9afcf8 to 0xdc9b0000)
+fce0:                                                       80c9b29c 00000000
+fd00: 00000000 80017134 8001a748 dc302ac0 00000000 00000000 dc454a00 80c12ed8
+fd20: dc115410 80017238 00000000 dc454a10 00000001 80017588 00000001 00000000
+fd40: 00000000 dc302ac0 dc9afe38 dc9afe68 00000004 80c12ed8 00000000 dc454a00
+fd60: 00000004 80436f88 00000000 00000000 00000600 0000ffff 0000000c 80c113c4
+fd80: 80c9b29c 00000001 00000004 dc115470 60000013 dc302ac0 dc46e000 dc302800
+fda0: dc9afe10 dc302b78 60000013 dc302ac0 dc46e000 00000035 dc46e5b0 80438c90
+fdc0: dc9afe10 dc302800 dc302800 dc9afe68 dc9afe38 80424cb4 00000005 dc9afe10
+fde0: dc9afe20 80424de8 dc9afe10 dc302800 dc46e910 80424e90 dc473c00 dc454f00
+fe00: 000001b5 7f619d64 dcc7c830 00000000 00000000 dc9afe38 dc9afe68 00000000
+fe20: 00000000 00000000 dc9afe28 dc9afe28 80424d80 00000000 00000035 9cac0034
+fe40: 00000000 00000000 00000000 00000000 000001b5 00000000 00000000 00000000
+fe60: dc9afe68 dc9afe10 3b9aca00 00000000 00000080 00000034 00000000 00000100
+fe80: 00000000 00000000 dc9afe10 00000004 dc454a00 00000000 dc46e010 dc46e96c
+fea0: dc46e000 dc46e964 00200200 00100100 dc46e910 7f619ec0 00000600 80c0e770
+fec0: dc15a900 dcc7c838 00000000 dc46e954 8042d434 dcc44680 dc46e954 dc004400
+fee0: dc454500 00000000 00000000 dc9ae038 dc004400 8003c450 dcc44680 dc004414
+ff00: dc46e954 dc454500 00000001 dcc44680 dc004414 dcc44698 dc9ae000 dc9ae030
+ff20: 00000001 dc9ae000 dc004400 8003d158 8003d020 00000000 00000000 80c53941
+ff40: dc9aff64 dcb71ea0 00000000 dcc44680 8003d020 00000000 00000000 00000000
+ff60: 00000000 80042480 00000000 00000000 000000f8 dcc44680 00000000 00000000
+ff80: dc9aff80 dc9aff80 00000000 00000000 dc9aff90 dc9aff90 dc9affac dcb71ea0
+ffa0: 800423cc 00000000 00000000 8000e018 00000000 00000000 00000000 00000000
+ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
+[<8001a6f8>] (v7_dma_clean_range+0x20/0x38) from [<800170fc>] (dma_cache_maint_page+0x50/0x54)
+[<800170fc>] (dma_cache_maint_page+0x50/0x54) from [<80017134>] (__dma_page_cpu_to_dev+0x34/0x9c)
+[<80017134>] (__dma_page_cpu_to_dev+0x34/0x9c) from [<80017238>] (arm_dma_map_page+0x64/0x68)
+[<80017238>] (arm_dma_map_page+0x64/0x68) from [<80017588>] (arm_dma_map_sg+0x7c/0xf4)
+[<80017588>] (arm_dma_map_sg+0x7c/0xf4) from [<80436f88>] (sdhci_send_command+0x894/0xe00)
+[<80436f88>] (sdhci_send_command+0x894/0xe00) from [<80438c90>] (sdhci_request+0xc0/0x1ec)
+[<80438c90>] (sdhci_request+0xc0/0x1ec) from [<80424cb4>] (mmc_start_request+0xb8/0xd4)
+[<80424cb4>] (mmc_start_request+0xb8/0xd4) from [<80424de8>] (__mmc_start_req+0x60/0x84)
+[<80424de8>] (__mmc_start_req+0x60/0x84) from [<80424e90>] (mmc_wait_for_req+0x10/0x20)
+[<80424e90>] (mmc_wait_for_req+0x10/0x20) from [<7f619d64>] (ath6kl_sdio_scat_rw.isra.10+0x1dc/0x240 [ath6kl_sdio])
+[<7f619d64>] (ath6kl_sdio_scat_rw.isra.10+0x1dc/0x240 [ath6kl_sdio]) from [<7f619ec0>] (ath6kl_sdio_write_async_work+0x5c/0x104 [ath6kl_sdio])
+[<7f619ec0>] (ath6kl_sdio_write_async_work+0x5c/0x104 [ath6kl_sdio]) from [<8003c450>] (process_one_work+0x10c/0x370)
+[<8003c450>] (process_one_work+0x10c/0x370) from [<8003d158>] (worker_thread+0x138/0x3fc)
+[<8003d158>] (worker_thread+0x138/0x3fc) from [<80042480>] (kthread+0xb4/0xb8)
+[<80042480>] (kthread+0xb4/0xb8) from [<8000e018>] (ret_from_fork+0x14/0x3c)
+Code: e1a02312 e2423001 e1c00003 f57ff04f (ee070f3a)
+---[ end trace 0c038f0b8e0b67a3 ]---
+Kernel panic - not syncing: Fatal exception
+
+Jason's analysis:
+
+  "The GCC 4.8.1 compiler will not do the for-loop till scat_entries, instead,
+   it only run one round loop. This may be caused by that the GCC 4.8.1 thought
+   that the scat_list only have one item and then no need to do full iteration,
+   but this is simply wrong by looking at the assebly code. This will cause the sg
+   buffer not get set when scat_entries > 1 and thus lead to kernel panic.
+
+   Note: This issue not observed with GCC 4.7.2, only found on the GCC 4.8.1)"
+
+Fix this by using the normal [0] style for defining unknown number of list
+entries following the struct. This also fixes corruption with scat_q_depth, which
+was mistankely added to the end of struct and overwritten if there were more
+than item in the scat list.
+
+Reported-by: Jason Liu <r64343@freescale.com>
+Tested-by: Jason Liu <r64343@freescale.com>
+Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
+Cc: Josh Cartwright <joshc@ni.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath6kl/hif.h  |    4 ++--
+ drivers/net/wireless/ath/ath6kl/sdio.c |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath6kl/hif.h
++++ b/drivers/net/wireless/ath/ath6kl/hif.h
+@@ -197,9 +197,9 @@ struct hif_scatter_req {
+       /* bounce buffer for upper layers to copy to/from */
+       u8 *virt_dma_buf;
+-      struct hif_scatter_item scat_list[1];
+-
+       u32 scat_q_depth;
++
++      struct hif_scatter_item scat_list[0];
+ };
+ struct ath6kl_irq_proc_registers {
+--- a/drivers/net/wireless/ath/ath6kl/sdio.c
++++ b/drivers/net/wireless/ath/ath6kl/sdio.c
+@@ -348,7 +348,7 @@ static int ath6kl_sdio_alloc_prep_scat_r
+       int i, scat_req_sz, scat_list_sz, size;
+       u8 *virt_buf;
+-      scat_list_sz = (n_scat_entry - 1) * sizeof(struct hif_scatter_item);
++      scat_list_sz = n_scat_entry * sizeof(struct hif_scatter_item);
+       scat_req_sz = sizeof(*s_req) + scat_list_sz;
+       if (!virt_scat)
diff --git a/queue-3.14/clk-gate-fix-bit-check-in-clk_register_gate.patch b/queue-3.14/clk-gate-fix-bit-check-in-clk_register_gate.patch
new file mode 100644 (file)
index 0000000..ae97b14
--- /dev/null
@@ -0,0 +1,33 @@
+From 2e9dcdae4068460c45a308dd891be5248260251c Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+Date: Wed, 24 Dec 2014 17:43:27 +0300
+Subject: clk-gate: fix bit # check in clk_register_gate()
+
+From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+
+commit 2e9dcdae4068460c45a308dd891be5248260251c upstream.
+
+In case CLK_GATE_HIWORD_MASK flag is passed to clk_register_gate(), the bit #
+should be no higher than 15, however the corresponding check is obviously off-
+by-one.
+
+Fixes: 045779942c04 ("clk: gate: add CLK_GATE_HIWORD_MASK")
+Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/clk-gate.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/clk-gate.c
++++ b/drivers/clk/clk-gate.c
+@@ -128,7 +128,7 @@ struct clk *clk_register_gate(struct dev
+       struct clk_init_data init;
+       if (clk_gate_flags & CLK_GATE_HIWORD_MASK) {
+-              if (bit_idx > 16) {
++              if (bit_idx > 15) {
+                       pr_err("gate bit exceeds LOWORD field\n");
+                       return ERR_PTR(-EINVAL);
+               }
diff --git a/queue-3.14/nfsv4-don-t-call-put_rpccred-under-the-rcu_read_lock.patch b/queue-3.14/nfsv4-don-t-call-put_rpccred-under-the-rcu_read_lock.patch
new file mode 100644 (file)
index 0000000..2315bcd
--- /dev/null
@@ -0,0 +1,31 @@
+From 7c0af9ffb7bb4e5355470fa60b3eb711ddf226fa Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <trond.myklebust@primarydata.com>
+Date: Thu, 26 Feb 2015 12:54:46 -0500
+Subject: NFSv4: Don't call put_rpccred() under the rcu_read_lock()
+
+From: Trond Myklebust <trond.myklebust@primarydata.com>
+
+commit 7c0af9ffb7bb4e5355470fa60b3eb711ddf226fa upstream.
+
+put_rpccred() can sleep.
+
+Fixes: 8f649c3762547 ("NFSv4: Fix the locking in nfs_inode_reclaim_delegation()")
+Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/nfs/delegation.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/nfs/delegation.c
++++ b/fs/nfs/delegation.c
+@@ -161,8 +161,8 @@ void nfs_inode_reclaim_delegation(struct
+                                 &delegation->flags);
+                       NFS_I(inode)->delegation_state = delegation->type;
+                       spin_unlock(&delegation->lock);
+-                      put_rpccred(oldcred);
+                       rcu_read_unlock();
++                      put_rpccred(oldcred);
+                       trace_nfs4_reclaim_delegation(inode, res->delegation_type);
+               } else {
+                       /* We appear to have raced with a delegation return. */
index 33e730b6b9de2f125f74a3f53152302b7a849f36..58ffef0c804106b3620c905a3a99df55961ee806 100644 (file)
@@ -89,3 +89,8 @@ drm-radeon-use-drm_mode_vrefresh-rather-than-mode-vrefresh.patch
 drm-radeon-fix-1-rb-harvest-config-setup-for-tn-rl.patch
 efi-small-leak-on-error-in-runtime-map-code.patch
 acpi-video-load-the-module-even-if-acpi-is-disabled.patch
+nfsv4-don-t-call-put_rpccred-under-the-rcu_read_lock.patch
+asoc-omap-pcm-correct-dma-mask.patch
+ath5k-fix-spontaneus-ar5312-freezes.patch
+ath6kl-fix-struct-hif_scatter_req-list-handling.patch
+clk-gate-fix-bit-check-in-clk_register_gate.patch