From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Jassi Brar <jassisinghbrar@gmail.com>,
Vinod Koul <vinod.koul@linux.intel.com>,
Tomasz Figa <t.figa@samsung.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: [ 35/38] drivers/dma/pl330.c: fix locking in pl330_free_chan_resources()
Date: Thu, 18 Jul 2013 22:21:51 -0700 [thread overview]
Message-ID: <20130719052050.275740304@linuxfoundation.org> (raw)
In-Reply-To: <20130719052047.858393825@linuxfoundation.org>
3.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
commit da331ba8e9c5de72a27e50f71105395bba6eebe0 upstream.
tasklet_kill() may sleep so call it before taking pch->lock.
Fixes following lockup:
BUG: scheduling while atomic: cat/2383/0x00000002
Modules linked in:
unwind_backtrace+0x0/0xfc
__schedule_bug+0x4c/0x58
__schedule+0x690/0x6e0
sys_sched_yield+0x70/0x78
tasklet_kill+0x34/0x8c
pl330_free_chan_resources+0x24/0x88
dma_chan_put+0x4c/0x50
[...]
BUG: spinlock lockup suspected on CPU#0, swapper/0/0
lock: 0xe52aa04c, .magic: dead4ead, .owner: cat/2383, .owner_cpu: 1
unwind_backtrace+0x0/0xfc
do_raw_spin_lock+0x194/0x204
_raw_spin_lock_irqsave+0x20/0x28
pl330_tasklet+0x2c/0x5a8
tasklet_action+0xfc/0x114
__do_softirq+0xe4/0x19c
irq_exit+0x98/0x9c
handle_IPI+0x124/0x16c
gic_handle_irq+0x64/0x68
__irq_svc+0x40/0x70
cpuidle_wrap_enter+0x4c/0xa0
cpuidle_enter_state+0x18/0x68
cpuidle_idle_call+0xac/0xe0
cpu_idle+0xac/0xf0
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Vinod Koul <vinod.koul@linux.intel.com>
Cc: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/dma/pl330.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2485,10 +2485,10 @@ static void pl330_free_chan_resources(st
struct dma_pl330_chan *pch = to_pchan(chan);
unsigned long flags;
- spin_lock_irqsave(&pch->lock, flags);
-
tasklet_kill(&pch->task);
+ spin_lock_irqsave(&pch->lock, flags);
+
pl330_release_channel(pch->pl330_chid);
pch->pl330_chid = NULL;
next prev parent reply other threads:[~2013-07-19 5:26 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-19 5:21 [ 00/38] 3.9.11-stable review Greg Kroah-Hartman
2013-07-19 5:21 ` [ 01/38] CIFS use sensible file nlink values if unprovided Greg Kroah-Hartman
2013-07-19 5:21 ` [ 02/38] CIFS: Fix a deadlock when a file is reopened Greg Kroah-Hartman
2013-07-19 5:21 ` [ 03/38] rtlwifi: rtl8723ae: Fix typo in firmware names Greg Kroah-Hartman
2013-07-19 5:21 ` [ 04/38] rtlwifi: rtl8192cu: Fix duplicate if test Greg Kroah-Hartman
2013-07-19 5:21 ` [ 05/38] jbd2: move superblock checksum calculation to jbd2_write_superblock() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 06/38] jbd2: fix theoretical race in jbd2__journal_restart Greg Kroah-Hartman
2013-07-19 5:21 ` [ 07/38] ext4: fix corruption when online resizing a fs with 1K block size Greg Kroah-Hartman
2013-07-19 5:21 ` [ 08/38] ext3,ext4: dont mess with dir_file->f_pos in htree_dirblock_to_tree() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 09/38] usb: gadget: f_mass_storage: add missing memory barrier for thread_wakeup_needed Greg Kroah-Hartman
2013-07-19 5:21 ` [ 10/38] xhci: check for failed dma pool allocation Greg Kroah-Hartman
2013-07-19 5:21 ` [ 11/38] usb: host: xhci-plat: release mem region while removing module Greg Kroah-Hartman
2013-07-19 5:21 ` [ 12/38] drivers: hv: switch to use mb() instead of smp_mb() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 13/38] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Greg Kroah-Hartman
2013-07-19 5:21 ` [ 14/38] cgroup: fix umount vs cgroup_event_remove() race Greg Kroah-Hartman
2013-07-19 5:21 ` [ 15/38] xen/time: remove blocked time accounting from xen "clockchip" Greg Kroah-Hartman
2013-07-19 5:21 ` [ 16/38] xen/pcifront: Deal with toolstack missing XenbusStateClosing state Greg Kroah-Hartman
2013-07-19 5:21 ` [ 17/38] genirq: Fix can_request_irq() for IRQs without an action Greg Kroah-Hartman
2013-07-19 5:21 ` [ 18/38] drivers/rtc/rtc-rv3029c2.c: fix disabling AIE irq Greg Kroah-Hartman
2013-07-19 5:21 ` [ 19/38] ACPI / EC: Add HP Folio 13 to ec_dmi_table in order to skip DSDT scan Greg Kroah-Hartman
2013-07-19 5:21 ` [ 20/38] ACPICA: Do not use extended sleep registers unless HW-reduced bit is set Greg Kroah-Hartman
2013-07-19 5:21 ` [ 21/38] ACPI / PM: Fix corner case in acpi_bus_update_power() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 22/38] ocfs2: xattr: fix inlined xattr reflink Greg Kroah-Hartman
2013-07-19 5:21 ` [ 23/38] nbd: correct disconnect behavior Greg Kroah-Hartman
2013-07-19 5:21 ` [ 24/38] PCI: Finish SR-IOV VF setup before adding the device Greg Kroah-Hartman
2013-07-19 5:21 ` [ 25/38] PCI: Fix refcount issue in pci_create_root_bus() error recovery path Greg Kroah-Hartman
2013-07-19 5:21 ` [ 26/38] ahci: remove pmp link online check in FBS EH Greg Kroah-Hartman
2013-07-19 5:21 ` [ 27/38] timer: Fix jiffies wrap behavior of round_jiffies_common() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 28/38] Btrfs: fix estale with btrfs send Greg Kroah-Hartman
2013-07-19 5:21 ` [ 29/38] Btrfs: only do the tree_mod_log_free_eb if this is our last ref Greg Kroah-Hartman
2013-07-19 5:21 ` [ 30/38] ext4: fix data offset overflow on 32-bit archs in ext4_inline_data_fiemap() Greg Kroah-Hartman
2013-07-19 5:21 ` [ 31/38] ext4: fix overflows in SEEK_HOLE, SEEK_DATA implementations Greg Kroah-Hartman
2013-07-19 5:21 ` [ 32/38] ext4: fix data offset overflow in ext4_xattr_fiemap() on 32-bit archs Greg Kroah-Hartman
2013-07-19 5:21 ` [ 33/38] ext4: fix overflow when counting used blocks on 32-bit architectures Greg Kroah-Hartman
2013-07-19 5:21 ` [ 34/38] ext4: dont allow ext4_free_blocks() to fail due to ENOMEM Greg Kroah-Hartman
2013-07-19 5:21 ` Greg Kroah-Hartman [this message]
2013-07-19 5:21 ` [ 36/38] memcg, kmem: fix reference count handling on the error path Greg Kroah-Hartman
2013-07-19 5:21 ` [ 37/38] mm/memory-hotplug: fix lowmem count overflow when offline pages Greg Kroah-Hartman
2013-07-19 5:21 ` [ 38/38] Handle big endianness in NTLM (ntlmv2) authentication Greg Kroah-Hartman
2013-07-19 16:45 ` [ 00/38] 3.9.11-stable review Shuah Khan
2013-07-19 16:45 ` Shuah Khan
2013-07-19 19:25 ` Greg Kroah-Hartman
2013-07-19 23:47 ` Greg Kroah-Hartman
2013-07-20 0:10 ` Shuah Khan
2013-07-20 0:10 ` Shuah Khan
2013-07-20 16:34 ` Shuah Khan
2013-07-20 16:34 ` Shuah Khan
2013-07-20 16:50 ` Greg Kroah-Hartman
2013-07-21 0:37 ` Satoru Takeuchi
2013-07-21 1:34 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130719052050.275740304@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=b.zolnierkie@samsung.com \
--cc=jassisinghbrar@gmail.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=t.figa@samsung.com \
--cc=torvalds@linux-foundation.org \
--cc=vinod.koul@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.