From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
alan@lxorguk.ukuu.org.uk, Fengguang Wu <fengguang.wu@intel.com>,
Jiri Kosina <jkosina@suse.cz>, Jens Axboe <axboe@kernel.dk>,
Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Subject: [ 15/37] floppy: destroy floppy workqueue before cleaning up the queue
Date: Fri, 14 Dec 2012 15:00:52 -0800 [thread overview]
Message-ID: <20121214222256.127378636@linuxfoundation.org> (raw)
In-Reply-To: <20121214222252.781413287@linuxfoundation.org>
3.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiri Kosina <jkosina@suse.cz>
commit eac7cc52c6b410e542af431b2ee93f3d7dbfb6af upstream.
We need to first destroy the floppy_wq workqueue before cleaning up
the queue. Otherwise we might race with still pending work with the
workqueue, but all the block queue already gone. This might lead to
various oopses, such as
CPU 0
Pid: 6, comm: kworker/u:0 Not tainted 3.7.0-rc4 #1 Bochs Bochs
RIP: 0010:[<ffffffff8134eef5>] [<ffffffff8134eef5>] blk_peek_request+0xd5/0x1c0
RSP: 0000:ffff88000dc7dd88 EFLAGS: 00010092
RAX: 0000000000000001 RBX: 0000000000000000 RCX: 0000000000000000
RDX: ffff88000f602688 RSI: ffffffff81fd95d8 RDI: 6b6b6b6b6b6b6b6b
RBP: ffff88000dc7dd98 R08: ffffffff81fd95c8 R09: 0000000000000000
R10: ffffffff81fd9480 R11: 0000000000000001 R12: 6b6b6b6b6b6b6b6b
R13: ffff88000dc7dfd8 R14: ffff88000dc7dfd8 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffffffff81e21000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000000 CR3: 0000000001e11000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process kworker/u:0 (pid: 6, threadinfo ffff88000dc7c000, task ffff88000dc5ecc0)
Stack:
0000000000000000 0000000000000000 ffff88000dc7ddb8 ffffffff8134efee
ffff88000dc7ddb8 0000000000000000 ffff88000dc7dde8 ffffffff814aef3c
ffffffff81e75d80 ffff88000dc0c640 ffff88000fbfb000 ffffffff814aed90
Call Trace:
[<ffffffff8134efee>] blk_fetch_request+0xe/0x30
[<ffffffff814aef3c>] redo_fd_request+0x1ac/0x400
[<ffffffff814aed90>] ? start_motor+0x130/0x130
[<ffffffff8106b526>] process_one_work+0x136/0x450
[<ffffffff8106af65>] ? manage_workers+0x205/0x2e0
[<ffffffff8106bb6d>] worker_thread+0x14d/0x420
[<ffffffff8106ba20>] ? rescuer_thread+0x1a0/0x1a0
[<ffffffff8107075a>] kthread+0xba/0xc0
[<ffffffff810706a0>] ? __kthread_parkme+0x80/0x80
[<ffffffff818b553a>] ret_from_fork+0x7a/0xb0
[<ffffffff810706a0>] ? __kthread_parkme+0x80/0x80
Code: 0f 84 c0 00 00 00 83 f8 01 0f 85 e2 00 00 00 81 4b 40 00 00 80 00 48 89 df e8 58 f8 ff ff be fb ff ff ff
fe ff ff <49> 8b 1c 24 49 39 dc 0f 85 2e ff ff ff 41 0f b6 84 24 28 04 00
RIP [<ffffffff8134eef5>] blk_peek_request+0xd5/0x1c0
RSP <ffff88000dc7dd88>
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Tested-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/block/floppy.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -4329,6 +4329,7 @@ out_unreg_region:
out_unreg_blkdev:
unregister_blkdev(FLOPPY_MAJOR, "fd");
out_put_disk:
+ destroy_workqueue(floppy_wq);
while (dr--) {
del_timer_sync(&motor_off_timer[dr]);
if (disks[dr]->queue) {
@@ -4341,7 +4342,6 @@ out_put_disk:
}
put_disk(disks[dr]);
}
- destroy_workqueue(floppy_wq);
return err;
}
@@ -4556,6 +4556,8 @@ static void __exit floppy_module_exit(vo
unregister_blkdev(FLOPPY_MAJOR, "fd");
platform_driver_unregister(&floppy_driver);
+ destroy_workqueue(floppy_wq);
+
for (drive = 0; drive < N_DRIVE; drive++) {
del_timer_sync(&motor_off_timer[drive]);
@@ -4580,7 +4582,6 @@ static void __exit floppy_module_exit(vo
cancel_delayed_work_sync(&fd_timeout);
cancel_delayed_work_sync(&fd_timer);
- destroy_workqueue(floppy_wq);
if (atomic_read(&usage_count))
floppy_release_irq_and_dma();
next prev parent reply other threads:[~2012-12-14 23:03 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-14 23:00 [ 00/37] 3.6.11-stable review Greg Kroah-Hartman
2012-12-14 23:00 ` [ 01/37] tmpfs: fix shared mempolicy leak Greg Kroah-Hartman
2012-12-14 23:00 ` [ 02/37] Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts" Greg Kroah-Hartman
2012-12-14 23:00 ` [ 03/37] mmc: sh-mmcif: avoid oops on spurious interrupts (second try) Greg Kroah-Hartman
2012-12-14 23:00 ` [ 04/37] ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and CONFIG_VFPv3 set Greg Kroah-Hartman
2012-12-14 23:00 ` [ 05/37] ASoC: dmaengine: Correct Makefile when sound is built as module Greg Kroah-Hartman
2012-12-14 23:00 ` [ 06/37] Staging: ipack/bridges/tpci200: avoid kernel bug when uninstalling a device Greg Kroah-Hartman
2012-12-14 23:00 ` [ 07/37] Input: matrix-keymap - provide proper module license Greg Kroah-Hartman
2012-12-14 23:00 ` [ 08/37] i82975x_edac: Fix dimm label initialization Greg Kroah-Hartman
2012-12-14 23:00 ` [ 09/37] edac: Fix the dimm filling for csrows-based layouts Greg Kroah-Hartman
2012-12-14 23:00 ` [ 10/37] workqueue: convert BUG_ON()s in __queue_delayed_work() to WARN_ON_ONCE()s Greg Kroah-Hartman
2012-12-14 23:00 ` [ 11/37] drm/i915: do not ignore eDP bpc settings from vbt Greg Kroah-Hartman
2012-12-14 23:00 ` [ 12/37] drm/i915: do not default to 18 bpp for eDP if missing from VBT Greg Kroah-Hartman
2012-12-14 23:00 ` [ 13/37] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls Greg Kroah-Hartman
2012-12-14 23:00 ` [ 14/37] x86,AMD: Power driver support for AMDs family 16h processors Greg Kroah-Hartman
2012-12-14 23:00 ` Greg Kroah-Hartman [this message]
2012-12-14 23:00 ` [ 16/37] x86: hpet: Fix masking of MSI interrupts Greg Kroah-Hartman
2012-12-14 23:00 ` [ 17/37] USB: add new zte 3g-dongles pid to option.c Greg Kroah-Hartman
2012-12-14 23:00 ` [ 18/37] USB: option: blacklist network interface on Huawei E173 Greg Kroah-Hartman
2012-12-14 23:00 ` [ 19/37] USB: ftdi_sio: Add support for Newport AGILIS motor drivers Greg Kroah-Hartman
2012-12-14 23:00 ` [ 20/37] usb: ftdi_sio: fixup BeagleBone A5+ quirk Greg Kroah-Hartman
2012-12-14 23:00 ` [ 21/37] USB: cp210x: add Virtenio Preon32 device id Greg Kroah-Hartman
2012-12-14 23:00 ` [ 22/37] USB: mark uas driver as BROKEN Greg Kroah-Hartman
2012-12-14 23:01 ` [ 23/37] ACPI / battery: Correct battery capacity values on Thinkpads Greg Kroah-Hartman
2012-12-14 23:01 ` [ 24/37] ACPI / PM: Add Sony Vaio VPCEB1S1E to nonvs blacklist Greg Kroah-Hartman
2012-12-14 23:01 ` [ 25/37] ACPI / PNP: Do not crash due to stale pointer use during system resume Greg Kroah-Hartman
2012-12-14 23:01 ` [ 26/37] ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 Greg Kroah-Hartman
2012-12-14 23:01 ` [ 27/37] ACPI / video: Add "Asus UL30VT" to ACPI video detect blacklist Greg Kroah-Hartman
2012-12-14 23:01 ` [ 28/37] USB: OHCI: workaround for hardware bug: retired TDs not added to the Done Queue Greg Kroah-Hartman
2012-12-14 23:01 ` [ 29/37] xhci: Extend Fresco Logic MSI quirk Greg Kroah-Hartman
2012-12-14 23:01 ` [ 30/37] ftrace: Clear bits properly in reset_iter_read() Greg Kroah-Hartman
2012-12-14 23:01 ` [ 31/37] ring-buffer: Fix NULL pointer if rb_set_head_page() fails Greg Kroah-Hartman
2012-12-14 23:01 ` [ 32/37] ring-buffer: Fix race between integrity check and readers Greg Kroah-Hartman
2012-12-14 23:01 ` [ 33/37] cdc-acm: implement TIOCSSERIAL to avoid blocking close(2) Greg Kroah-Hartman
2012-12-14 23:01 ` [ 34/37] perf test: fix a build error on builtin-test Greg Kroah-Hartman
2012-12-14 23:01 ` [ 35/37] USB: EHCI: bugfix: urb->hcpriv should not be NULL Greg Kroah-Hartman
2012-12-14 23:01 ` [ 36/37] rcu: Fix batch-limit size problem Greg Kroah-Hartman
2012-12-14 23:01 ` [ 37/37] PCI/PM: Fix deadlock when unbinding device if parent in D3cold Greg Kroah-Hartman
2012-12-15 14:24 ` [ 00/37] 3.6.11-stable review Shuah Khan
2012-12-15 20:47 ` Shuah Khan
2012-12-15 14:27 ` Satoru Takeuchi
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=20121214222256.127378636@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=axboe@kernel.dk \
--cc=fengguang.wu@intel.com \
--cc=herton.krzesinski@canonical.com \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).