Mauro Carvalho Chehab
dd47fbd40e
[media] smsusb: don't sleep while atomic
smscore_getbuffer() calls internally wait_event(), with can sleep.
As smsusb_onresponse() is called on interrupt context, this causes
the following warning:
BUG: sleeping function called from invalid context at drivers/media/common/siano/smscoreapi.c:1653
in_atomic(): 1, irqs_disabled(): 1, pid: 11084, name: systemd-udevd
INFO: lockdep is turned off.
irq event stamp: 0
hardirqs last enabled at (0): [< (null)>] (null)
hardirqs last disabled at (0): [<ffffffff811480f7>] copy_process.part.7+0x10e7/0x56d0
softirqs last enabled at (0): [<ffffffff81148193>] copy_process.part.7+0x1183/0x56d0
softirqs last disabled at (0): [< (null)>] (null)
CPU: 2 PID: 11084 Comm: systemd-udevd Tainted: G B W 4.5.0-rc3+ #47
Hardware name: /NUC5i7RYB, BIOS RYBDWi35.86A.0350.2015.0812.1722 08/12/2015
0000000000000000 ffff8803c6907a80 ffffffff81933901 ffff8802bd916000
ffff8802bd9165c8 ffff8803c6907aa8 ffffffff811c6af5 ffff8802bd916000
ffffffffa0ce9b60 0000000000000675 ffff8803c6907ae8 ffffffff811c6ce5
Call Trace:
<IRQ> [<ffffffff81933901>] dump_stack+0x85/0xc4
[<ffffffff811c6af5>] ___might_sleep+0x245/0x3a0
[<ffffffff811c6ce5>] __might_sleep+0x95/0x1a0
[<ffffffffa0ce020a>] ? list_add_locked+0xca/0x140 [smsmdtv]
[<ffffffffa0ce3b8d>] smscore_getbuffer+0x7d/0x120 [smsmdtv]
[<ffffffff8123819d>] ? trace_hardirqs_off+0xd/0x10
[<ffffffffa0ce3b10>] ? smscore_sendrequest_and_wait.isra.5+0x120/0x120 [smsmdtv]
[<ffffffffa0ce020a>] ? list_add_locked+0xca/0x140 [smsmdtv]
[<ffffffffa0ce13ca>] ? smscore_putbuffer+0x3a/0x40 [smsmdtv]
[<ffffffffa0d107bc>] smsusb_submit_urb+0x2ec/0x4f0 [smsusb]
[<ffffffffa0d10e36>] smsusb_onresponse+0x476/0x720 [smsusb]
Let's add a work queue to handle the bottom half, preventing this
problem.
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2016-02-16 09:29:34 -02:00
..
2016-02-06 00:34:01 +01:00
2016-01-11 19:33:59 -08:00
2015-12-29 15:32:24 -05:00
2016-02-06 00:34:01 +01:00
2016-01-17 12:32:01 -08:00
2016-01-24 12:34:13 -08:00
2016-01-06 16:37:14 +01:00
2016-02-01 12:27:18 -08:00
2016-01-06 08:25:24 -05:00
2016-02-03 10:04:58 -08:00
2016-01-20 18:16:29 -08:00
2016-01-31 15:49:06 -08:00
2016-01-04 21:46:45 -05:00
2016-01-29 21:45:17 +01:00
2016-01-29 21:45:17 +01:00
2016-01-30 22:05:17 +08:00
2016-01-13 17:30:33 +09:00
2016-01-20 10:15:21 -08:00
2016-01-01 18:31:34 +01:00
2016-01-20 17:09:18 -08:00
2016-01-20 18:03:56 -08:00
2016-02-05 15:24:17 +10:00
2016-01-20 17:30:20 -08:00
2016-01-07 16:07:54 +01:00
2016-01-13 10:23:36 -08:00
2016-01-27 18:48:46 -08:00
2016-02-03 08:28:43 -08:00
2016-01-29 11:13:52 +01:00
2016-01-18 14:12:33 -05:00
2016-02-01 13:08:26 -08:00
2016-02-02 16:42:22 -05:00
2016-01-22 17:20:30 -08:00
2016-01-29 12:30:47 +01:00
2016-01-31 14:48:58 -08:00
2016-01-11 23:55:43 -05:00
2016-01-17 12:32:01 -08:00
2016-01-12 12:17:28 +01:00
2016-01-12 08:21:18 -07:00
2016-02-02 16:47:14 +05:30
2016-02-03 15:43:59 -08:00
2016-02-16 09:29:34 -02:00
2016-01-20 18:42:30 -08:00
2016-01-20 17:09:18 -08:00
2016-01-17 12:32:01 -08:00
2016-01-21 12:32:08 -08:00
2016-01-22 12:04:21 -08:00
2016-01-24 12:50:56 -08:00
2016-02-01 15:56:08 -08:00
2015-12-29 19:06:23 +01:00
2016-01-21 19:53:10 -05:00
2016-01-29 17:43:16 -08:00
2016-01-21 19:58:02 -08:00
2016-02-01 15:56:08 -08:00
2016-01-22 18:04:28 -05:00
2016-01-20 17:09:18 -08:00
2016-01-03 16:32:59 -08:00
2016-01-29 21:44:53 +01:00
2015-12-26 17:01:18 -08:00
2016-01-17 12:32:01 -08:00
2016-01-24 10:15:01 -08:00
2016-02-03 01:00:29 +01:00
2016-01-14 01:03:18 +01:00
2016-01-12 01:12:40 +01:00
2016-01-29 12:38:59 -08:00
2016-01-21 15:04:59 +01:00
2016-01-20 17:09:18 -08:00
2016-01-15 12:14:47 -08:00
2016-01-12 20:47:06 +02:00
2016-01-12 20:47:06 +02:00
2016-01-18 12:10:45 -08:00
2016-01-26 12:47:51 +01:00
2016-01-04 10:26:58 -05:00
2016-02-03 08:28:43 -08:00
2016-01-22 17:30:52 -08:00
2016-01-15 13:18:47 -08:00
2016-01-19 21:25:57 +02:00
2016-02-16 09:20:45 -02:00
2016-01-21 19:58:02 -08:00
2016-01-24 12:43:06 -08:00
2016-01-31 17:09:39 -08:00
2016-02-04 17:00:10 -08:00
2016-01-27 11:22:25 -07:00
2016-01-22 18:04:28 -05:00
2016-01-26 10:18:28 +02:00
2016-01-31 16:54:36 +01:00
2016-01-29 15:13:48 -08:00