* [BUG] suspicious RCU usage
@ 2013-05-03 6:53 majianpeng
2013-05-03 8:10 ` Benjamin Tissoires
0 siblings, 1 reply; 8+ messages in thread
From: majianpeng @ 2013-05-03 6:53 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: linux-input
Hi,
I found some message about input subsystem.
[ 167.518470] ===============================
[ 167.518471] [ INFO: suspicious RCU usage. ]
[ 167.518473] 3.9.0+ #94 Not tainted
[ 167.518474] -------------------------------
[ 167.518475] include/linux/rcupdate.h:476 Illegal context switch in RCU read-side critical section!
[ 167.518476]
[ 167.518476] other info that might help us debug this:
[ 167.518476]
[ 167.518478]
[ 167.518478] rcu_scheduler_active = 1, debug_locks = 0
[ 167.518479] 4 locks held by Xorg/5502:
[ 167.518480] #0: (&evdev->mutex){+.+...}, at: [<ffffffff81512c3d>] evdev_write+0x6d/0x160
[ 167.518488] #1: (&(&dev->event_lock)->rlock#2){-.-...}, at: [<ffffffff8150dd9b>] input_inject_event+0x5b/0x230
[ 167.518493] #2: (rcu_read_lock){.+.+..}, at: [<ffffffff8150dd82>] input_inject_event+0x42/0x230
[ 167.518496] #3: (&(&usbhid->lock)->rlock){-.....}, at: [<ffffffff81565289>] usb_hidinput_input_event+0x89/0x120
[ 167.518501]
[ 167.518501] stack backtrace:
[ 167.518503] CPU: 0 PID: 5502 Comm: Xorg Not tainted 3.9.0+ #94
[ 167.518505] Hardware name: Dell Inc. OptiPlex 390/0M5DCD, BIOS A09 07/24/2012
[ 167.518506] 0000000000000001 ffff8800689c7c38 ffffffff816f249f ffff8800689c7c68
[ 167.518509] ffffffff810acb1d 0000000000000000 ffffffff81a03ac7 000000000000019d
[ 167.518511] 0000000000000000 ffff8800689c7c90 ffffffff8107cda7 0000000000000000
[ 167.518514] Call Trace:
[ 167.518517] [<ffffffff816f249f>] dump_stack+0x19/0x1b
[ 167.518521] [<ffffffff810acb1d>] lockdep_rcu_suspicious+0xfd/0x130
[ 167.518524] [<ffffffff8107cda7>] __might_sleep+0xc7/0x230
[ 167.518526] [<ffffffff816f7770>] mutex_lock_nested+0x40/0x3a0
[ 167.518530] [<ffffffff81312ac4>] ? vsnprintf+0x354/0x640
[ 167.518533] [<ffffffff81553cc4>] hid_debug_event+0x34/0x100
[ 167.518535] [<ffffffff81554197>] hid_dump_input+0x67/0xa0
[ 167.518537] [<ffffffff81556430>] hid_set_field+0x50/0x120
[ 167.518539] [<ffffffff8156529a>] usb_hidinput_input_event+0x9a/0x120
[ 167.518541] [<ffffffff8150d89e>] input_handle_event+0x8e/0x530
[ 167.518543] [<ffffffff8150df10>] input_inject_event+0x1d0/0x230
[ 167.518545] [<ffffffff8150dd82>] ? input_inject_event+0x42/0x230
[ 167.518548] [<ffffffff81512cae>] evdev_write+0xde/0x160
[ 167.518551] [<ffffffff81185038>] vfs_write+0xc8/0x1f0
[ 167.518553] [<ffffffff81185535>] SyS_write+0x55/0xa0
[ 167.518555] [<ffffffff81704482>] system_call_fastpath+0x16/0x1b
[ 167.518557] BUG: sleeping function called from invalid context at kernel/mutex.c:413
[ 167.518558] in_atomic(): 1, irqs_disabled(): 1, pid: 5502, name: Xorg
[ 167.518559] INFO: lockdep is turned off.
[ 167.518560] irq event stamp: 1098574
[ 167.518561] hardirqs last enabled at (1098573): [<ffffffff816fb53f>] _raw_spin_unlock_irqrestore+0x3f/0x70
[ 167.518563] hardirqs last disabled at (1098574): [<ffffffff816faaf5>] _raw_spin_lock_irqsave+0x25/0xa0
[ 167.518565] softirqs last enabled at (1098306): [<ffffffff8104971f>] __do_softirq+0x18f/0x3c0
[ 167.518568] softirqs last disabled at (1097867): [<ffffffff81049ad5>] irq_exit+0xa5/0xb0
[ 167.518570] CPU: 0 PID: 5502 Comm: Xorg Not tainted 3.9.0+ #94
[ 167.518571] Hardware name: Dell Inc. OptiPlex 390/0M5DCD, BIOS A09 07/24/2012
[ 167.518572] ffffffff81a03ac7 ffff8800689c7c68 ffffffff816f249f ffff8800689c7c90
[ 167.518574] ffffffff8107ce60 0000000000000000 ffff8800689c7fd8 ffff88006a62c800
[ 167.518577] ffff8800689c7d10 ffffffff816f7770 ffff8800689c7d00 ffffffff81312ac4
[ 167.518579] Call Trace:
[ 167.518581] [<ffffffff816f249f>] dump_stack+0x19/0x1b
[ 167.518583] [<ffffffff8107ce60>] __might_sleep+0x180/0x230
[ 167.518585] [<ffffffff816f7770>] mutex_lock_nested+0x40/0x3a0
[ 167.518587] [<ffffffff81312ac4>] ? vsnprintf+0x354/0x640
[ 167.518590] [<ffffffff81553cc4>] hid_debug_event+0x34/0x100
[ 167.518592] [<ffffffff81554197>] hid_dump_input+0x67/0xa0
[ 167.518594] [<ffffffff81556430>] hid_set_field+0x50/0x120
[ 167.518596] [<ffffffff8156529a>] usb_hidinput_input_event+0x9a/0x120
[ 167.518598] [<ffffffff8150d89e>] input_handle_event+0x8e/0x530
[ 167.518600] [<ffffffff8150df10>] input_inject_event+0x1d0/0x230
[ 167.518602] [<ffffffff8150dd82>] ? input_inject_event+0x42/0x230
[ 167.518604] [<ffffffff81512cae>] evdev_write+0xde/0x160
[ 167.518606] [<ffffffff81185038>] vfs_write+0xc8/0x1f0
[ 167.518608] [<ffffffff81185535>] SyS_write+0x55/0xa0
[ 167.518610] [<ffffffff81704482>] system_call_fastpath+0x16/0x1b
Thanks!
Jianpeng Ma
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 6:53 [BUG] suspicious RCU usage majianpeng
@ 2013-05-03 8:10 ` Benjamin Tissoires
2013-05-03 8:23 ` Jiri Kosina
0 siblings, 1 reply; 8+ messages in thread
From: Benjamin Tissoires @ 2013-05-03 8:10 UTC (permalink / raw)
To: majianpeng, Jiri Kosina; +Cc: Dmitry Torokhov, linux-input
Thanks for reporting it.
Jiri, we had a similar bug in the RH bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=958935
Are these two reports potentially fixed by your patch "HID: protect
hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
If so, maybe we should send it to stable as well...
Cheers,
Benjamin
On Fri, May 3, 2013 at 8:53 AM, majianpeng <majianpeng@gmail.com> wrote:
> Hi,
> I found some message about input subsystem.
> [ 167.518470] ===============================
> [ 167.518471] [ INFO: suspicious RCU usage. ]
> [ 167.518473] 3.9.0+ #94 Not tainted
> [ 167.518474] -------------------------------
> [ 167.518475] include/linux/rcupdate.h:476 Illegal context switch in RCU read-side critical section!
> [ 167.518476]
> [ 167.518476] other info that might help us debug this:
> [ 167.518476]
> [ 167.518478]
> [ 167.518478] rcu_scheduler_active = 1, debug_locks = 0
> [ 167.518479] 4 locks held by Xorg/5502:
> [ 167.518480] #0: (&evdev->mutex){+.+...}, at: [<ffffffff81512c3d>] evdev_write+0x6d/0x160
> [ 167.518488] #1: (&(&dev->event_lock)->rlock#2){-.-...}, at: [<ffffffff8150dd9b>] input_inject_event+0x5b/0x230
> [ 167.518493] #2: (rcu_read_lock){.+.+..}, at: [<ffffffff8150dd82>] input_inject_event+0x42/0x230
> [ 167.518496] #3: (&(&usbhid->lock)->rlock){-.....}, at: [<ffffffff81565289>] usb_hidinput_input_event+0x89/0x120
> [ 167.518501]
> [ 167.518501] stack backtrace:
> [ 167.518503] CPU: 0 PID: 5502 Comm: Xorg Not tainted 3.9.0+ #94
> [ 167.518505] Hardware name: Dell Inc. OptiPlex 390/0M5DCD, BIOS A09 07/24/2012
> [ 167.518506] 0000000000000001 ffff8800689c7c38 ffffffff816f249f ffff8800689c7c68
> [ 167.518509] ffffffff810acb1d 0000000000000000 ffffffff81a03ac7 000000000000019d
> [ 167.518511] 0000000000000000 ffff8800689c7c90 ffffffff8107cda7 0000000000000000
> [ 167.518514] Call Trace:
> [ 167.518517] [<ffffffff816f249f>] dump_stack+0x19/0x1b
> [ 167.518521] [<ffffffff810acb1d>] lockdep_rcu_suspicious+0xfd/0x130
> [ 167.518524] [<ffffffff8107cda7>] __might_sleep+0xc7/0x230
> [ 167.518526] [<ffffffff816f7770>] mutex_lock_nested+0x40/0x3a0
> [ 167.518530] [<ffffffff81312ac4>] ? vsnprintf+0x354/0x640
> [ 167.518533] [<ffffffff81553cc4>] hid_debug_event+0x34/0x100
> [ 167.518535] [<ffffffff81554197>] hid_dump_input+0x67/0xa0
> [ 167.518537] [<ffffffff81556430>] hid_set_field+0x50/0x120
> [ 167.518539] [<ffffffff8156529a>] usb_hidinput_input_event+0x9a/0x120
> [ 167.518541] [<ffffffff8150d89e>] input_handle_event+0x8e/0x530
> [ 167.518543] [<ffffffff8150df10>] input_inject_event+0x1d0/0x230
> [ 167.518545] [<ffffffff8150dd82>] ? input_inject_event+0x42/0x230
> [ 167.518548] [<ffffffff81512cae>] evdev_write+0xde/0x160
> [ 167.518551] [<ffffffff81185038>] vfs_write+0xc8/0x1f0
> [ 167.518553] [<ffffffff81185535>] SyS_write+0x55/0xa0
> [ 167.518555] [<ffffffff81704482>] system_call_fastpath+0x16/0x1b
> [ 167.518557] BUG: sleeping function called from invalid context at kernel/mutex.c:413
> [ 167.518558] in_atomic(): 1, irqs_disabled(): 1, pid: 5502, name: Xorg
> [ 167.518559] INFO: lockdep is turned off.
> [ 167.518560] irq event stamp: 1098574
> [ 167.518561] hardirqs last enabled at (1098573): [<ffffffff816fb53f>] _raw_spin_unlock_irqrestore+0x3f/0x70
> [ 167.518563] hardirqs last disabled at (1098574): [<ffffffff816faaf5>] _raw_spin_lock_irqsave+0x25/0xa0
> [ 167.518565] softirqs last enabled at (1098306): [<ffffffff8104971f>] __do_softirq+0x18f/0x3c0
> [ 167.518568] softirqs last disabled at (1097867): [<ffffffff81049ad5>] irq_exit+0xa5/0xb0
> [ 167.518570] CPU: 0 PID: 5502 Comm: Xorg Not tainted 3.9.0+ #94
> [ 167.518571] Hardware name: Dell Inc. OptiPlex 390/0M5DCD, BIOS A09 07/24/2012
> [ 167.518572] ffffffff81a03ac7 ffff8800689c7c68 ffffffff816f249f ffff8800689c7c90
> [ 167.518574] ffffffff8107ce60 0000000000000000 ffff8800689c7fd8 ffff88006a62c800
> [ 167.518577] ffff8800689c7d10 ffffffff816f7770 ffff8800689c7d00 ffffffff81312ac4
> [ 167.518579] Call Trace:
> [ 167.518581] [<ffffffff816f249f>] dump_stack+0x19/0x1b
> [ 167.518583] [<ffffffff8107ce60>] __might_sleep+0x180/0x230
> [ 167.518585] [<ffffffff816f7770>] mutex_lock_nested+0x40/0x3a0
> [ 167.518587] [<ffffffff81312ac4>] ? vsnprintf+0x354/0x640
> [ 167.518590] [<ffffffff81553cc4>] hid_debug_event+0x34/0x100
> [ 167.518592] [<ffffffff81554197>] hid_dump_input+0x67/0xa0
> [ 167.518594] [<ffffffff81556430>] hid_set_field+0x50/0x120
> [ 167.518596] [<ffffffff8156529a>] usb_hidinput_input_event+0x9a/0x120
> [ 167.518598] [<ffffffff8150d89e>] input_handle_event+0x8e/0x530
> [ 167.518600] [<ffffffff8150df10>] input_inject_event+0x1d0/0x230
> [ 167.518602] [<ffffffff8150dd82>] ? input_inject_event+0x42/0x230
> [ 167.518604] [<ffffffff81512cae>] evdev_write+0xde/0x160
> [ 167.518606] [<ffffffff81185038>] vfs_write+0xc8/0x1f0
> [ 167.518608] [<ffffffff81185535>] SyS_write+0x55/0xa0
> [ 167.518610] [<ffffffff81704482>] system_call_fastpath+0x16/0x1b
>
>
> Thanks!
> Jianpeng Ma
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 8:10 ` Benjamin Tissoires
@ 2013-05-03 8:23 ` Jiri Kosina
2013-05-03 10:35 ` majianpeng
0 siblings, 1 reply; 8+ messages in thread
From: Jiri Kosina @ 2013-05-03 8:23 UTC (permalink / raw)
To: Benjamin Tissoires; +Cc: majianpeng, Dmitry Torokhov, linux-input
On Fri, 3 May 2013, Benjamin Tissoires wrote:
> Thanks for reporting it.
>
> Jiri, we had a similar bug in the RH bugzilla:
> https://bugzilla.redhat.com/show_bug.cgi?id=958935
>
> Are these two reports potentially fixed by your patch "HID: protect
> hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
> If so, maybe we should send it to stable as well...
I actually believe this bug is *introduced* by that patch :) All the
reports were with the kernel containing it, right?
Does the patch below fix it, please?
drivers/hid/hid-core.c | 2 +-
drivers/hid/hid-debug.c | 14 ++++++++------
include/linux/hid.h | 2 +-
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 1e51159..264f550 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2342,7 +2342,7 @@ struct hid_device *hid_allocate_device(void)
init_waitqueue_head(&hdev->debug_wait);
INIT_LIST_HEAD(&hdev->debug_list);
- mutex_init(&hdev->debug_list_lock);
+ spin_lock_init(&hdev->debug_list_lock);
sema_init(&hdev->driver_lock, 1);
sema_init(&hdev->driver_input_lock, 1);
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index 7e56cb3..572572c 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -580,14 +580,14 @@ void hid_debug_event(struct hid_device *hdev, char *buf)
int i;
struct hid_debug_list *list;
- mutex_lock(&hdev->debug_list_lock);
+ spin_lock(&hdev->debug_list_lock);
list_for_each_entry(list, &hdev->debug_list, node) {
for (i = 0; i < strlen(buf); i++)
list->hid_debug_buf[(list->tail + i) % HID_DEBUG_BUFSIZE] =
buf[i];
list->tail = (list->tail + i) % HID_DEBUG_BUFSIZE;
}
- mutex_unlock(&hdev->debug_list_lock);
+ spin_unlock(&hdev->debug_list_lock);
wake_up_interruptible(&hdev->debug_wait);
}
@@ -977,6 +977,7 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
{
int err = 0;
struct hid_debug_list *list;
+ unsigned long flags;
if (!(list = kzalloc(sizeof(struct hid_debug_list), GFP_KERNEL))) {
err = -ENOMEM;
@@ -992,9 +993,9 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
file->private_data = list;
mutex_init(&list->read_mutex);
- mutex_lock(&list->hdev->debug_list_lock);
+ spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
list_add_tail(&list->node, &list->hdev->debug_list);
- mutex_unlock(&list->hdev->debug_list_lock);
+ spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
out:
return err;
@@ -1088,10 +1089,11 @@ static unsigned int hid_debug_events_poll(struct file *file, poll_table *wait)
static int hid_debug_events_release(struct inode *inode, struct file *file)
{
struct hid_debug_list *list = file->private_data;
+ unsigned long flags;
- mutex_lock(&list->hdev->debug_list_lock);
+ spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
list_del(&list->node);
- mutex_unlock(&list->hdev->debug_list_lock);
+ spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
kfree(list->hid_debug_buf);
kfree(list);
diff --git a/include/linux/hid.h b/include/linux/hid.h
index af1b86d..0c48991 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -515,7 +515,7 @@ struct hid_device { /* device report descriptor */
struct dentry *debug_rdesc;
struct dentry *debug_events;
struct list_head debug_list;
- struct mutex debug_list_lock;
+ spinlock_t debug_list_lock;
wait_queue_head_t debug_wait;
};
--
Jiri Kosina
SUSE Labs
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 8:23 ` Jiri Kosina
@ 2013-05-03 10:35 ` majianpeng
2013-05-03 11:28 ` Jiri Kosina
0 siblings, 1 reply; 8+ messages in thread
From: majianpeng @ 2013-05-03 10:35 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Benjamin Tissoires, Dmitry Torokhov, linux-input
On 05/03/2013 04:23 PM, Jiri Kosina wrote:
> On Fri, 3 May 2013, Benjamin Tissoires wrote:
>
>> Thanks for reporting it.
>>
>> Jiri, we had a similar bug in the RH bugzilla:
>> https://bugzilla.redhat.com/show_bug.cgi?id=958935
>>
>> Are these two reports potentially fixed by your patch "HID: protect
>> hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
>> If so, maybe we should send it to stable as well...
> I actually believe this bug is *introduced* by that patch :) All the
> reports were with the kernel containing it, right?
>
> Does the patch below fix it, please?
>
>
>
>
> drivers/hid/hid-core.c | 2 +-
> drivers/hid/hid-debug.c | 14 ++++++++------
> include/linux/hid.h | 2 +-
> 3 files changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 1e51159..264f550 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -2342,7 +2342,7 @@ struct hid_device *hid_allocate_device(void)
>
> init_waitqueue_head(&hdev->debug_wait);
> INIT_LIST_HEAD(&hdev->debug_list);
> - mutex_init(&hdev->debug_list_lock);
> + spin_lock_init(&hdev->debug_list_lock);
> sema_init(&hdev->driver_lock, 1);
> sema_init(&hdev->driver_input_lock, 1);
>
> diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
> index 7e56cb3..572572c 100644
> --- a/drivers/hid/hid-debug.c
> +++ b/drivers/hid/hid-debug.c
> @@ -580,14 +580,14 @@ void hid_debug_event(struct hid_device *hdev, char *buf)
> int i;
> struct hid_debug_list *list;
>
> - mutex_lock(&hdev->debug_list_lock);
> + spin_lock(&hdev->debug_list_lock);
> list_for_each_entry(list, &hdev->debug_list, node) {
> for (i = 0; i < strlen(buf); i++)
> list->hid_debug_buf[(list->tail + i) % HID_DEBUG_BUFSIZE] =
> buf[i];
> list->tail = (list->tail + i) % HID_DEBUG_BUFSIZE;
> }
> - mutex_unlock(&hdev->debug_list_lock);
> + spin_unlock(&hdev->debug_list_lock);
>
> wake_up_interruptible(&hdev->debug_wait);
> }
> @@ -977,6 +977,7 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
> {
> int err = 0;
> struct hid_debug_list *list;
> + unsigned long flags;
>
> if (!(list = kzalloc(sizeof(struct hid_debug_list), GFP_KERNEL))) {
> err = -ENOMEM;
> @@ -992,9 +993,9 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
> file->private_data = list;
> mutex_init(&list->read_mutex);
>
> - mutex_lock(&list->hdev->debug_list_lock);
> + spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
> list_add_tail(&list->node, &list->hdev->debug_list);
> - mutex_unlock(&list->hdev->debug_list_lock);
> + spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
>
> out:
> return err;
> @@ -1088,10 +1089,11 @@ static unsigned int hid_debug_events_poll(struct file *file, poll_table *wait)
> static int hid_debug_events_release(struct inode *inode, struct file *file)
> {
> struct hid_debug_list *list = file->private_data;
> + unsigned long flags;
>
> - mutex_lock(&list->hdev->debug_list_lock);
> + spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
> list_del(&list->node);
> - mutex_unlock(&list->hdev->debug_list_lock);
> + spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
> kfree(list->hid_debug_buf);
> kfree(list);
>
> diff --git a/include/linux/hid.h b/include/linux/hid.h
> index af1b86d..0c48991 100644
> --- a/include/linux/hid.h
> +++ b/include/linux/hid.h
> @@ -515,7 +515,7 @@ struct hid_device { /* device report descriptor */
> struct dentry *debug_rdesc;
> struct dentry *debug_events;
> struct list_head debug_list;
> - struct mutex debug_list_lock;
> + spinlock_t debug_list_lock;
> wait_queue_head_t debug_wait;
> };
>
Add your patch.Found the following message:
[ 150.908051] ======================================================
[ 150.908053] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
[ 150.908056] 3.9.0+ #102 Not tainted
[ 150.908057] ------------------------------------------------------
[ 150.908060] Xorg/5473 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
[ 150.908062] (&(&hdev->debug_list_lock)->rlock){+.+...}, at: [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.908072]
[ 150.908072] and this task is already holding:
[ 150.908074] (&(&usbhid->lock)->rlock){-.....}, at: [<ffffffff8156b799>] usb_hidinput_input_event+0x89/0x120
[ 150.908081] which would create a new lock dependency:
[ 150.908082] (&(&usbhid->lock)->rlock){-.....} -> (&(&hdev->debug_list_lock)->rlock){+.+...}
[ 150.908089]
[ 150.908089] but this new dependency connects a HARDIRQ-irq-safe lock:
[ 150.908091] (&(&usbhid->lock)->rlock){-.....}
[ 150.908091] ... which became HARDIRQ-irq-safe at:
[ 150.908094] [<ffffffff810b08ff>] __lock_acquire+0x91f/0x1d80
[ 150.908098] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908101] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.908105] [<ffffffff8156b505>] hid_ctrl+0x45/0x1a0
[ 150.908108] [<ffffffff814db295>] usb_hcd_giveback_urb+0x65/0xf0
[ 150.908112] [<ffffffff814f4050>] ehci_urb_done+0x80/0xc0
[ 150.908115] [<ffffffff814f50a7>] qh_completions+0x367/0x570
[ 150.908118] [<ffffffff814f85fb>] ehci_work+0xdb/0x8d0
[ 150.908122] [<ffffffff814f9568>] ehci_irq+0x2d8/0x4c0
[ 150.908125] [<ffffffff814da577>] usb_hcd_irq+0x37/0x70
[ 150.908127] [<ffffffff810e3a75>] handle_irq_event_percpu+0x75/0x380
[ 150.908131] [<ffffffff810e3dc8>] handle_irq_event+0x48/0x70
[ 150.908134] [<ffffffff810e6fba>] handle_fasteoi_irq+0x5a/0x100
[ 150.908138] [<ffffffff8100453f>] handle_irq+0xbf/0x150
[ 150.908141] [<ffffffff8170c33a>] do_IRQ+0x5a/0xe0
[ 150.908145] [<ffffffff81701d6f>] ret_from_intr+0x0/0x13
[ 150.908148] [<ffffffff8106df68>] __kernel_text_address+0x58/0x80
[ 150.908152] [<ffffffff81005a1f>] print_context_stack+0x8f/0xf0
[ 150.908155] [<ffffffff8100483f>] dump_trace+0x1af/0x2d0
[ 150.908157] [<ffffffff8100fd1b>] save_stack_trace+0x2b/0x50
[ 150.908162] [<ffffffff81181e24>] create_object+0x144/0x310
[ 150.908167] [<ffffffff816e41db>] kmemleak_alloc+0x5b/0xc0
[ 150.908170] [<ffffffff8117aee6>] kmem_cache_alloc+0x106/0x290
[ 150.908174] [<ffffffff812051d9>] sysfs_new_dirent+0x59/0x140
[ 150.908177] [<ffffffff8120433b>] sysfs_add_file_mode+0x6b/0x110
[ 150.908180] [<ffffffff81207700>] internal_create_group+0xd0/0x230
[ 150.908183] [<ffffffff81207893>] sysfs_create_group+0x13/0x20
[ 150.908186] [<ffffffff814604b8>] device_add_groups+0x48/0xa0
[ 150.908190] [<ffffffff81461be7>] device_add+0x407/0x6b0
[ 150.908193] [<ffffffff81512d80>] input_register_device+0x200/0x5b0
[ 150.908196] [<ffffffff81560691>] hidinput_connect+0x15b1/0x2900
[ 150.908199] [<ffffffff8155e5ad>] hid_connect+0x2dd/0x350
[ 150.908202] [<ffffffff8155e774>] hid_device_probe+0x154/0x170
[ 150.908206] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908209] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908213] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908216] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908219] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908222] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908225] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.908228] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.908231] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.908234] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908238] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908241] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908244] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908247] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908250] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908253] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.908256] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.908260] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.908263] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908266] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908269] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908272] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908275] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908278] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908281] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.908285] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.908288] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.908292] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.908295]
[ 150.908295] to a HARDIRQ-irq-unsafe lock:
[ 150.908297] (&(&hdev->debug_list_lock)->rlock){+.+...}
[ 150.908297] ... which became HARDIRQ-irq-unsafe at:
[ 150.908301] ... [<ffffffff810b0603>] __lock_acquire+0x623/0x1d80
[ 150.908304] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908307] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.908310] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.908313] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.908316] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.908319] [<ffffffff8156c284>] usbhid_set_leds+0x84/0xc0
[ 150.908322] [<ffffffff8156cbf8>] usbhid_start+0x528/0x5f0
[ 150.908325] [<ffffffff8155e760>] hid_device_probe+0x140/0x170
[ 150.908328] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908331] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908335] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908337] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908340] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908344] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908346] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.908350] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.908353] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.908356] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908359] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908362] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908365] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908368] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908371] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908373] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.908376] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.908380] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.908383] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908386] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908389] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908392] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908395] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908398] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908401] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.908404] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.908408] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.908411] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.908414]
[ 150.908414] other info that might help us debug this:
[ 150.908414]
[ 150.908417] Possible interrupt unsafe locking scenario:
[ 150.908417]
[ 150.908419] CPU0 CPU1
[ 150.908420] ---- ----
[ 150.908422] lock(&(&hdev->debug_list_lock)->rlock);
[ 150.908425] local_irq_disable();
[ 150.908426] lock(&(&usbhid->lock)->rlock);
[ 150.908429] lock(&(&hdev->debug_list_lock)->rlock);
[ 150.908432] <Interrupt>
[ 150.908433] lock(&(&usbhid->lock)->rlock);
[ 150.908436]
[ 150.908436] *** DEADLOCK ***
[ 150.908436]
[ 150.908439] 4 locks held by Xorg/5473:
[ 150.908441] #0: (&evdev->mutex){+.+...}, at: [<ffffffff8151914d>] evdev_write+0x6d/0x160
[ 150.908448] #1: (&(&dev->event_lock)->rlock#2){-.-...}, at: [<ffffffff815142ab>] input_inject_event+0x5b/0x230
[ 150.908455] #2: (rcu_read_lock){.+.+..}, at: [<ffffffff81514292>] input_inject_event+0x42/0x230
[ 150.908461] #3: (&(&usbhid->lock)->rlock){-.....}, at: [<ffffffff8156b799>] usb_hidinput_input_event+0x89/0x120
[ 150.908468]
[ 150.908468] the dependencies between HARDIRQ-irq-safe lock and the holding lock:
[ 150.908473] -> (&(&usbhid->lock)->rlock){-.....} ops: 11 {
[ 150.908478] IN-HARDIRQ-W at:
[ 150.908480] [<ffffffff810b08ff>] __lock_acquire+0x91f/0x1d80
[ 150.908483] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908486] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.908489] [<ffffffff8156b505>] hid_ctrl+0x45/0x1a0
[ 150.908492] [<ffffffff814db295>] usb_hcd_giveback_urb+0x65/0xf0
[ 150.908495] [<ffffffff814f4050>] ehci_urb_done+0x80/0xc0
[ 150.908498] [<ffffffff814f50a7>] qh_completions+0x367/0x570
[ 150.908501] [<ffffffff814f85fb>] ehci_work+0xdb/0x8d0
[ 150.908504] [<ffffffff814f9568>] ehci_irq+0x2d8/0x4c0
[ 150.908507] [<ffffffff814da577>] usb_hcd_irq+0x37/0x70
[ 150.908510] [<ffffffff810e3a75>] handle_irq_event_percpu+0x75/0x380
[ 150.908513] [<ffffffff810e3dc8>] handle_irq_event+0x48/0x70
[ 150.908516] [<ffffffff810e6fba>] handle_fasteoi_irq+0x5a/0x100
[ 150.908519] [<ffffffff8100453f>] handle_irq+0xbf/0x150
[ 150.908522] [<ffffffff8170c33a>] do_IRQ+0x5a/0xe0
[ 150.908525] [<ffffffff81701d6f>] ret_from_intr+0x0/0x13
[ 150.908528] [<ffffffff8106df68>] __kernel_text_address+0x58/0x80
[ 150.908531] [<ffffffff81005a1f>] print_context_stack+0x8f/0xf0
[ 150.908534] [<ffffffff8100483f>] dump_trace+0x1af/0x2d0
[ 150.908537] [<ffffffff8100fd1b>] save_stack_trace+0x2b/0x50
[ 150.908540] [<ffffffff81181e24>] create_object+0x144/0x310
[ 150.908543] [<ffffffff816e41db>] kmemleak_alloc+0x5b/0xc0
[ 150.908546] [<ffffffff8117aee6>] kmem_cache_alloc+0x106/0x290
[ 150.908549] [<ffffffff812051d9>] sysfs_new_dirent+0x59/0x140
[ 150.908553] [<ffffffff8120433b>] sysfs_add_file_mode+0x6b/0x110
[ 150.908555] [<ffffffff81207700>] internal_create_group+0xd0/0x230
[ 150.908558] [<ffffffff81207893>] sysfs_create_group+0x13/0x20
[ 150.908561] [<ffffffff814604b8>] device_add_groups+0x48/0xa0
[ 150.908564] [<ffffffff81461be7>] device_add+0x407/0x6b0
[ 150.908567] [<ffffffff81512d80>] input_register_device+0x200/0x5b0
[ 150.908570] [<ffffffff81560691>] hidinput_connect+0x15b1/0x2900
[ 150.908573] [<ffffffff8155e5ad>] hid_connect+0x2dd/0x350
[ 150.908576] [<ffffffff8155e774>] hid_device_probe+0x154/0x170
[ 150.908579] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908583] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908586] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908589] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908592] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908595] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908598] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.908602] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.908605] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.908608] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908611] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908614] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908617] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908620] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908623] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908626] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.908629] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.908633] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.908635] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908638] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908641] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908644] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908647] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908650] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908653] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.908656] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.908659] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.908662] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.908665] INITIAL USE at:
[ 150.908667] [<ffffffff810b02f6>] __lock_acquire+0x316/0x1d80
[ 150.908670] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908673] [<ffffffff81701038>] _raw_spin_lock_irqsave+0x58/0xa0
[ 150.908676] [<ffffffff8156c180>] usbhid_submit_report+0x40/0x80
[ 150.908679] [<ffffffff8156c600>] usbhid_init_reports+0x40/0x110
[ 150.908682] [<ffffffff8156cbe3>] usbhid_start+0x513/0x5f0
[ 150.908685] [<ffffffff8155e760>] hid_device_probe+0x140/0x170
[ 150.908688] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908691] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908694] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908697] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908700] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908703] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908706] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.908710] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.908712] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.908716] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908719] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908722] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908725] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908728] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908731] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908734] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.908737] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.908740] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.908743] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908746] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908749] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908752] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908755] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908758] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908761] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.908764] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.908767] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.908771] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.908774] }
[ 150.908775] ... key at: [<ffffffff82986238>] __key.28245+0x0/0x8
[ 150.908780] ... acquired at:
[ 150.908782] [<ffffffff810afb9b>] check_irq_usage+0x5b/0xe0
[ 150.908784] [<ffffffff810b0e7b>] __lock_acquire+0xe9b/0x1d80
[ 150.908787] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908790] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.908792] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.908796] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.908799] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.908802] [<ffffffff8156b7aa>] usb_hidinput_input_event+0x9a/0x120
[ 150.908805] [<ffffffff81513dae>] input_handle_event+0x8e/0x530
[ 150.908808] [<ffffffff81514420>] input_inject_event+0x1d0/0x230
[ 150.908820] [<ffffffff815191be>] evdev_write+0xde/0x160
[ 150.908825] [<ffffffff81186978>] vfs_write+0xc8/0x1f0
[ 150.908831] [<ffffffff81186e75>] SyS_write+0x55/0xa0
[ 150.908837] [<ffffffff8170a982>] system_call_fastpath+0x16/0x1b
[ 150.908843]
[ 150.908846]
[ 150.908846] the dependencies between the lock to be acquired and HARDIRQ-irq-unsafe lock:
[ 150.908863] -> (&(&hdev->debug_list_lock)->rlock){+.+...} ops: 2 {
[ 150.908881] HARDIRQ-ON-W at:
[ 150.908885] [<ffffffff810b0603>] __lock_acquire+0x623/0x1d80
[ 150.908891] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.908897] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.908903] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.908909] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.908916] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.908923] [<ffffffff8156c284>] usbhid_set_leds+0x84/0xc0
[ 150.908929] [<ffffffff8156cbf8>] usbhid_start+0x528/0x5f0
[ 150.908936] [<ffffffff8155e760>] hid_device_probe+0x140/0x170
[ 150.908943] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.908950] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.908956] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.908963] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.908969] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.908975] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.908981] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.908989] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.908995] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.909001] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909008] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909015] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909021] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909027] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909034] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909040] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.909046] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.909053] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.909059] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909065] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909072] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909078] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909084] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909091] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909097] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.909104] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.909111] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.909117] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.909124] SOFTIRQ-ON-W at:
[ 150.909128] [<ffffffff810b0638>] __lock_acquire+0x658/0x1d80
[ 150.909134] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.909140] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.909146] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.909152] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.909159] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.909166] [<ffffffff8156c284>] usbhid_set_leds+0x84/0xc0
[ 150.909172] [<ffffffff8156cbf8>] usbhid_start+0x528/0x5f0
[ 150.909178] [<ffffffff8155e760>] hid_device_probe+0x140/0x170
[ 150.909185] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909192] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909198] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909205] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909211] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909218] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909224] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.909231] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.909237] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.909244] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909250] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909257] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909263] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909270] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909276] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909282] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.909288] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.909296] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.909301] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909308] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909315] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909321] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909327] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909334] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909340] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.909347] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.909354] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.909361] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.909367] INITIAL USE at:
[ 150.909371] [<ffffffff810b02f6>] __lock_acquire+0x316/0x1d80
[ 150.909377] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.909382] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.909388] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.909395] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.909401] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.909408] [<ffffffff8156c284>] usbhid_set_leds+0x84/0xc0
[ 150.909414] [<ffffffff8156cbf8>] usbhid_start+0x528/0x5f0
[ 150.909420] [<ffffffff8155e760>] hid_device_probe+0x140/0x170
[ 150.909427] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909433] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909440] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909446] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909453] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909459] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909465] [<ffffffff8155e0d4>] hid_add_device+0x174/0x370
[ 150.909471] [<ffffffff8156a974>] usbhid_probe+0x394/0x4d0
[ 150.909477] [<ffffffff814e2015>] usb_probe_interface+0xf5/0x240
[ 150.909484] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909490] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909496] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909503] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909509] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909515] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909521] [<ffffffff814e0bcb>] usb_set_configuration+0x4db/0x820
[ 150.909528] [<ffffffff814ea6a7>] generic_probe+0x37/0x90
[ 150.909535] [<ffffffff814e1162>] usb_probe_device+0x32/0x60
[ 150.909540] [<ffffffff81464a8f>] driver_probe_device+0x7f/0x370
[ 150.909547] [<ffffffff81464e7b>] __device_attach+0x4b/0x60
[ 150.909554] [<ffffffff8146294e>] bus_for_each_drv+0x4e/0xa0
[ 150.909560] [<ffffffff81464998>] device_attach+0x98/0xb0
[ 150.909566] [<ffffffff81463cb0>] bus_probe_device+0xa0/0xc0
[ 150.909572] [<ffffffff81461d8e>] device_add+0x5ae/0x6b0
[ 150.909578] [<ffffffff814d6b68>] usb_new_device+0x1c8/0x320
[ 150.909585] [<ffffffff814d7f89>] hub_thread+0x5d9/0x1570
[ 150.909592] [<ffffffff810717fb>] kthread+0xdb/0xe0
[ 150.909598] [<ffffffff8170a8dc>] ret_from_fork+0x7c/0xb0
[ 150.909605] }
[ 150.909607] ... key at: [<ffffffff82985f04>] __key.25753+0x0/0x8
[ 150.909613] ... acquired at:
[ 150.909616] [<ffffffff810afb9b>] check_irq_usage+0x5b/0xe0
[ 150.909622] [<ffffffff810b0e7b>] __lock_acquire+0xe9b/0x1d80
[ 150.909627] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.909633] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.909638] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.909645] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.909651] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.909658] [<ffffffff8156b7aa>] usb_hidinput_input_event+0x9a/0x120
[ 150.909664] [<ffffffff81513dae>] input_handle_event+0x8e/0x530
[ 150.909670] [<ffffffff81514420>] input_inject_event+0x1d0/0x230
[ 150.909676] [<ffffffff815191be>] evdev_write+0xde/0x160
[ 150.909682] [<ffffffff81186978>] vfs_write+0xc8/0x1f0
[ 150.909687] [<ffffffff81186e75>] SyS_write+0x55/0xa0
[ 150.909693] [<ffffffff8170a982>] system_call_fastpath+0x16/0x1b
[ 150.909698]
[ 150.909701]
[ 150.909701] stack backtrace:
[ 150.909708] CPU: 1 PID: 5473 Comm: Xorg Not tainted 3.9.0+ #102
[ 150.909712] Hardware name: Dell Inc. OptiPlex 390/0M5DCD, BIOS A09 07/24/2012
[ 150.909716] ffffffff82213570 ffff88006c279a70 ffffffff816f89af ffff88006c279b68
[ 150.909726] ffffffff810afb34 0000000000000000 ffff880000000000 ffff880000000001
[ 150.909736] ffff88006c279ac0 ffffffff81a083a5 ffff88006c279b00 ffff88006c279ac0
[ 150.909745] Call Trace:
[ 150.909753] [<ffffffff816f89af>] dump_stack+0x19/0x1b
[ 150.909760] [<ffffffff810afb34>] check_usage+0x4e4/0x4f0
[ 150.909768] [<ffffffff810afb9b>] check_irq_usage+0x5b/0xe0
[ 150.909774] [<ffffffff810b0e7b>] __lock_acquire+0xe9b/0x1d80
[ 150.909783] [<ffffffff810ac95d>] ? trace_hardirqs_off+0xd/0x10
[ 150.909791] [<ffffffff81086c7f>] ? local_clock+0x4f/0x60
[ 150.909798] [<ffffffff810ad1bf>] ? lock_release_holdtime.part.24+0xf/0x190
[ 150.909807] [<ffffffff81313faa>] ? string.isra.3+0x3a/0xd0
[ 150.909814] [<ffffffff810b2437>] lock_acquire+0x97/0x1d0
[ 150.909821] [<ffffffff8155a172>] ? hid_debug_event+0x32/0x100
[ 150.909827] [<ffffffff81700e66>] _raw_spin_lock+0x46/0x80
[ 150.909835] [<ffffffff8155a172>] ? hid_debug_event+0x32/0x100
[ 150.909842] [<ffffffff8155a172>] hid_debug_event+0x32/0x100
[ 150.909849] [<ffffffff8155a647>] hid_dump_input+0x67/0xa0
[ 150.909857] [<ffffffff8155c940>] hid_set_field+0x50/0x120
[ 150.909864] [<ffffffff8156b7aa>] usb_hidinput_input_event+0x9a/0x120
[ 150.909871] [<ffffffff81513dae>] input_handle_event+0x8e/0x530
[ 150.909878] [<ffffffff81514420>] input_inject_event+0x1d0/0x230
[ 150.909884] [<ffffffff81514292>] ? input_inject_event+0x42/0x230
[ 150.909891] [<ffffffff815191be>] evdev_write+0xde/0x160
[ 150.909898] [<ffffffff81186978>] vfs_write+0xc8/0x1f0
[ 150.909904] [<ffffffff81186e75>] SyS_write+0x55/0xa0
[ 150.909911] [<ffffffff8170a982>] system_call_fastpath+0x16/0x1b
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 10:35 ` majianpeng
@ 2013-05-03 11:28 ` Jiri Kosina
2013-05-03 15:51 ` Dmitry Torokhov
0 siblings, 1 reply; 8+ messages in thread
From: Jiri Kosina @ 2013-05-03 11:28 UTC (permalink / raw)
To: majianpeng; +Cc: Benjamin Tissoires, Dmitry Torokhov, linux-input
On Fri, 3 May 2013, majianpeng wrote:
> >> Jiri, we had a similar bug in the RH bugzilla:
> >> https://bugzilla.redhat.com/show_bug.cgi?id=958935
> >>
> >> Are these two reports potentially fixed by your patch "HID: protect
> >> hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
> >> If so, maybe we should send it to stable as well...
> > I actually believe this bug is *introduced* by that patch :) All the
> > reports were with the kernel containing it, right?
> >
> > Does the patch below fix it, please?
[ ... snip ... ]
> Add your patch.Found the following message:
> [ 150.908051] ======================================================
> [ 150.908053] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
> [ 150.908056] 3.9.0+ #102 Not tainted
Right, oh well, I missed that scenario.
The patch below should cover that, please let me know. Thanks a lot for
your testing.
drivers/hid/hid-core.c | 2 +-
drivers/hid/hid-debug.c | 15 +++++++++------
include/linux/hid.h | 2 +-
3 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 6961bbe..a506421 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2341,7 +2341,7 @@ struct hid_device *hid_allocate_device(void)
init_waitqueue_head(&hdev->debug_wait);
INIT_LIST_HEAD(&hdev->debug_list);
- mutex_init(&hdev->debug_list_lock);
+ spin_lock_init(&hdev->debug_list_lock);
sema_init(&hdev->driver_lock, 1);
sema_init(&hdev->driver_input_lock, 1);
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index 7e56cb3..8453214 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -579,15 +579,16 @@ void hid_debug_event(struct hid_device *hdev, char *buf)
{
int i;
struct hid_debug_list *list;
+ unsigned long flags;
- mutex_lock(&hdev->debug_list_lock);
+ spin_lock_irqsave(&hdev->debug_list_lock, flags);
list_for_each_entry(list, &hdev->debug_list, node) {
for (i = 0; i < strlen(buf); i++)
list->hid_debug_buf[(list->tail + i) % HID_DEBUG_BUFSIZE] =
buf[i];
list->tail = (list->tail + i) % HID_DEBUG_BUFSIZE;
}
- mutex_unlock(&hdev->debug_list_lock);
+ spin_unlock_irqrestore(&hdev->debug_list_lock, flags);
wake_up_interruptible(&hdev->debug_wait);
}
@@ -977,6 +978,7 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
{
int err = 0;
struct hid_debug_list *list;
+ unsigned long flags;
if (!(list = kzalloc(sizeof(struct hid_debug_list), GFP_KERNEL))) {
err = -ENOMEM;
@@ -992,9 +994,9 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
file->private_data = list;
mutex_init(&list->read_mutex);
- mutex_lock(&list->hdev->debug_list_lock);
+ spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
list_add_tail(&list->node, &list->hdev->debug_list);
- mutex_unlock(&list->hdev->debug_list_lock);
+ spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
out:
return err;
@@ -1088,10 +1090,11 @@ static unsigned int hid_debug_events_poll(struct file *file, poll_table *wait)
static int hid_debug_events_release(struct inode *inode, struct file *file)
{
struct hid_debug_list *list = file->private_data;
+ unsigned long flags;
- mutex_lock(&list->hdev->debug_list_lock);
+ spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
list_del(&list->node);
- mutex_unlock(&list->hdev->debug_list_lock);
+ spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
kfree(list->hid_debug_buf);
kfree(list);
diff --git a/include/linux/hid.h b/include/linux/hid.h
index af1b86d..0c48991 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -515,7 +515,7 @@ struct hid_device { /* device report descriptor */
struct dentry *debug_rdesc;
struct dentry *debug_events;
struct list_head debug_list;
- struct mutex debug_list_lock;
+ spinlock_t debug_list_lock;
wait_queue_head_t debug_wait;
};
--
Jiri Kosina
SUSE Labs
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 11:28 ` Jiri Kosina
@ 2013-05-03 15:51 ` Dmitry Torokhov
2013-05-06 1:10 ` majianpeng
0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Torokhov @ 2013-05-03 15:51 UTC (permalink / raw)
To: Jiri Kosina; +Cc: majianpeng, Benjamin Tissoires, linux-input
On Fri, May 03, 2013 at 01:28:25PM +0200, Jiri Kosina wrote:
> On Fri, 3 May 2013, majianpeng wrote:
>
> > >> Jiri, we had a similar bug in the RH bugzilla:
> > >> https://bugzilla.redhat.com/show_bug.cgi?id=958935
> > >>
> > >> Are these two reports potentially fixed by your patch "HID: protect
> > >> hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
> > >> If so, maybe we should send it to stable as well...
> > > I actually believe this bug is *introduced* by that patch :) All the
> > > reports were with the kernel containing it, right?
> > >
> > > Does the patch below fix it, please?
> [ ... snip ... ]
> > Add your patch.Found the following message:
> > [ 150.908051] ======================================================
> > [ 150.908053] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
> > [ 150.908056] 3.9.0+ #102 Not tainted
>
> Right, oh well, I missed that scenario.
This looks good to me.
Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
> The patch below should cover that, please let me know. Thanks a lot for
> your testing.
>
> drivers/hid/hid-core.c | 2 +-
> drivers/hid/hid-debug.c | 15 +++++++++------
> include/linux/hid.h | 2 +-
> 3 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 6961bbe..a506421 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -2341,7 +2341,7 @@ struct hid_device *hid_allocate_device(void)
>
> init_waitqueue_head(&hdev->debug_wait);
> INIT_LIST_HEAD(&hdev->debug_list);
> - mutex_init(&hdev->debug_list_lock);
> + spin_lock_init(&hdev->debug_list_lock);
> sema_init(&hdev->driver_lock, 1);
> sema_init(&hdev->driver_input_lock, 1);
>
> diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
> index 7e56cb3..8453214 100644
> --- a/drivers/hid/hid-debug.c
> +++ b/drivers/hid/hid-debug.c
> @@ -579,15 +579,16 @@ void hid_debug_event(struct hid_device *hdev, char *buf)
> {
> int i;
> struct hid_debug_list *list;
> + unsigned long flags;
>
> - mutex_lock(&hdev->debug_list_lock);
> + spin_lock_irqsave(&hdev->debug_list_lock, flags);
> list_for_each_entry(list, &hdev->debug_list, node) {
> for (i = 0; i < strlen(buf); i++)
> list->hid_debug_buf[(list->tail + i) % HID_DEBUG_BUFSIZE] =
> buf[i];
> list->tail = (list->tail + i) % HID_DEBUG_BUFSIZE;
> }
> - mutex_unlock(&hdev->debug_list_lock);
> + spin_unlock_irqrestore(&hdev->debug_list_lock, flags);
>
> wake_up_interruptible(&hdev->debug_wait);
> }
> @@ -977,6 +978,7 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
> {
> int err = 0;
> struct hid_debug_list *list;
> + unsigned long flags;
>
> if (!(list = kzalloc(sizeof(struct hid_debug_list), GFP_KERNEL))) {
> err = -ENOMEM;
> @@ -992,9 +994,9 @@ static int hid_debug_events_open(struct inode *inode, struct file *file)
> file->private_data = list;
> mutex_init(&list->read_mutex);
>
> - mutex_lock(&list->hdev->debug_list_lock);
> + spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
> list_add_tail(&list->node, &list->hdev->debug_list);
> - mutex_unlock(&list->hdev->debug_list_lock);
> + spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
>
> out:
> return err;
> @@ -1088,10 +1090,11 @@ static unsigned int hid_debug_events_poll(struct file *file, poll_table *wait)
> static int hid_debug_events_release(struct inode *inode, struct file *file)
> {
> struct hid_debug_list *list = file->private_data;
> + unsigned long flags;
>
> - mutex_lock(&list->hdev->debug_list_lock);
> + spin_lock_irqsave(&list->hdev->debug_list_lock, flags);
> list_del(&list->node);
> - mutex_unlock(&list->hdev->debug_list_lock);
> + spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags);
> kfree(list->hid_debug_buf);
> kfree(list);
>
> diff --git a/include/linux/hid.h b/include/linux/hid.h
> index af1b86d..0c48991 100644
> --- a/include/linux/hid.h
> +++ b/include/linux/hid.h
> @@ -515,7 +515,7 @@ struct hid_device { /* device report descriptor */
> struct dentry *debug_rdesc;
> struct dentry *debug_events;
> struct list_head debug_list;
> - struct mutex debug_list_lock;
> + spinlock_t debug_list_lock;
> wait_queue_head_t debug_wait;
> };
>
>
> --
> Jiri Kosina
> SUSE Labs
--
Dmitry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-03 15:51 ` Dmitry Torokhov
@ 2013-05-06 1:10 ` majianpeng
2013-05-06 11:09 ` Jiri Kosina
0 siblings, 1 reply; 8+ messages in thread
From: majianpeng @ 2013-05-06 1:10 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Jiri Kosina, Benjamin Tissoires, linux-input
On 05/03/2013 11:51 PM, Dmitry Torokhov wrote:
> On Fri, May 03, 2013 at 01:28:25PM +0200, Jiri Kosina wrote:
>> On Fri, 3 May 2013, majianpeng wrote:
>>
>>>>> Jiri, we had a similar bug in the RH bugzilla:
>>>>> https://bugzilla.redhat.com/show_bug.cgi?id=958935
>>>>>
>>>>> Are these two reports potentially fixed by your patch "HID: protect
>>>>> hid_debug_list" (https://patchwork.kernel.org/patch/2453931/)
>>>>> If so, maybe we should send it to stable as well...
>>>> I actually believe this bug is *introduced* by that patch :) All the
>>>> reports were with the kernel containing it, right?
>>>>
>>>> Does the patch below fix it, please?
>> [ ... snip ... ]
>>> Add your patch.Found the following message:
>>> [ 150.908051] ======================================================
>>> [ 150.908053] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
>>> [ 150.908056] 3.9.0+ #102 Not tainted
>> Right, oh well, I missed that scenario.
> This looks good to me.
>
> Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
It's all good for me.
Thanks!
Jianpeng Ma
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG] suspicious RCU usage
2013-05-06 1:10 ` majianpeng
@ 2013-05-06 11:09 ` Jiri Kosina
0 siblings, 0 replies; 8+ messages in thread
From: Jiri Kosina @ 2013-05-06 11:09 UTC (permalink / raw)
To: Dmitry Torokhov, majianpeng; +Cc: Benjamin Tissoires, linux-input
On Fri, 3 May 2013, Dmitry Torokhov wrote:
> > > [ 150.908051] ======================================================
> > > [ 150.908053] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
> > > [ 150.908056] 3.9.0+ #102 Not tainted
> >
> > Right, oh well, I missed that scenario.
>
> This looks good to me.
>
> Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
On Mon, 6 May 2013, majianpeng wrote:
> > Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> >
> It's all good for me.
Thanks a lot. I have now queued the patch for 3.10.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-05-06 11:09 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-03 6:53 [BUG] suspicious RCU usage majianpeng
2013-05-03 8:10 ` Benjamin Tissoires
2013-05-03 8:23 ` Jiri Kosina
2013-05-03 10:35 ` majianpeng
2013-05-03 11:28 ` Jiri Kosina
2013-05-03 15:51 ` Dmitry Torokhov
2013-05-06 1:10 ` majianpeng
2013-05-06 11:09 ` Jiri Kosina
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).