mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Sedat Dilek <sedat.dilek@gmail.com>
Cc: Jiri Kosina <jikos@kernel.org>, Tejun Heo <tj@kernel.org>,
	Lai Jiangshan <jiangshanlai@gmail.com>,
	Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Paul McKenney <paulmck@linux.vnet.ibm.com>,
	Andy Lutomirski <luto@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-usb@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	Felipe Balbi <balbi@ti.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH] usbhid: Fix lockdep unannotated irqs-off warning
Date: Tue, 1 Mar 2016 10:07:40 -0500	[thread overview]
Message-ID: <20160301100740.759440b7@gandalf.local.home> (raw)
In-Reply-To: <CA+icZUUCNAUDVqg1D-brJtZ2_QRxW_2s+jv0T5MPpCE9Y-auvg@mail.gmail.com>

On Tue, 1 Mar 2016 11:05:42 +0100
Sedat Dilek <sedat.dilek@gmail.com> wrote:


> [ FACT #3: TEST-CASE #2 ]
> 
> The most reliable test-case is to simply unplug my external Logitech
> USB mouse - saw this by accident.
> YES, it was so simple.

Just to clarify, this happens on gcc and clang?


> 
> --- dmesg_4.5.0-rc6-2-llvmlinux-amd64.txt       2016-02-29
> 21:23:56.399691975 +0100
> +++ dmesg_4.5.0-rc6-2-llvmlinux-amd64_usbmouse-unplugged.txt
> 2016-02-29 21:28:14.401832240 +0100
> @@ -832,3 +832,75 @@
>  [   66.529779] PPP BSD Compression module registered
>  [   66.563013] PPP Deflate Compression module registered
>  [   66.978977] usb 2-1.5: USB disconnect, device number 4
> +[  321.937369] usb 2-1.4: USB disconnect, device number 3
> +[  321.950810] BUG: sleeping function called from invalid context at
> kernel/workqueue.c:2785
> +[  321.950816] in_atomic(): 0, irqs_disabled(): 1, pid: 44, name: kworker/2:1
> +[  321.950819] 9 locks held by kworker/2:1/44:
> +[  321.950820]  #0:  ("usb_hub_wq"){.+.+.+}, at: [<ffffffff810a7c5f>]
> process_one_work+0x30f/0x8d0
> +[  321.950830]  #1:  ((&hub->events)){+.+.+.}, at:
> [<ffffffff810a7c8c>] process_one_work+0x33c/0x8d0
> +[  321.950836]  #2:  (&dev->mutex){......}, at: [<ffffffff816fb0e0>]
> hub_event+0x50/0x15b0
> +[  321.950844]  #3:  (&dev->mutex){......}, at: [<ffffffff816f686f>]
> usb_disconnect+0x5f/0x2c0
> +[  321.950849]  #4:  (&dev->mutex){......}, at: [<ffffffff816245a2>]
> device_release_driver+0x22/0x40
> +[  321.950856]  #5:  (&dev->mutex){......}, at: [<ffffffff816245a2>]
> device_release_driver+0x22/0x40
> +[  321.950862]  #6:  (input_mutex){+.+.+.}, at: [<ffffffff8175171a>]
> __input_unregister_device+0x9a/0x190
> +[  321.950869]  #7:  (&dev->mutex#2){+.+...}, at:
> [<ffffffff8174fe27>] input_close_device+0x27/0x70
> +[  321.950875]  #8:  (hid_open_mut){+.+...}, at: [<ffffffffa0057388>]
> usbhid_close+0x28/0xb0 [usbhid]
> +[  321.950883] irq event stamp: 47770
> +[  321.950885] hardirqs last  enabled at (47769):
> [<ffffffff819426a2>] _raw_spin_unlock_irq+0x32/0x60
> +[  321.950889] hardirqs last disabled at (47770):
> [<ffffffff81115bdc>] del_timer_sync+0x3c/0x110

According to lockdep, interrupts were last disabled in del_timer_sync,
and they were never enabled. The numbers in parenthesis show the order
of events. _raw_spin_unlock_irq() at 47769, then del_timer_sync at
47770.

But why did they not get enabled again? We have:

	local_irq_save(flags);
	lock_map_acquire(&timer->lockdep_map);
	lock_map_release(&timer->lockdep_map);
	local_irq_restore(flags);

If this caused an issue, then you would have a lockdep splat. But
perhaps something corrupted "flags", and interrupts were not re-enabled?

> +[  321.950894] softirqs last  enabled at (47112):
> [<ffffffff810871a2>] __do_softirq+0x5a2/0x610
> +[  321.950898] softirqs last disabled at (47097):
> [<ffffffff8108747c>] irq_exit+0x9c/0x120
> +[  321.950903] CPU: 2 PID: 44 Comm: kworker/2:1 Not tainted
> 4.5.0-rc6-2-llvmlinux-amd64 #1
> +[  321.950905] Hardware name: SAMSUNG ELECTRONICS CO., LTD.
> 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
> +[  321.950908] Workqueue: usb_hub_wq hub_event
> +[  321.950911]  ffff8800d3326948 0000000000000092 0000000000000000
> ffff8800d4347568
> +[  321.950915]  ffffffff814ba7d4 ffff8800d43474f8 ffff8800d4340cc0
> ffff8800d4347568
> +[  321.950919]  ffffffff810e28fd 0000000000000092 0000000000000096
> ffff8800d43475a8
> +[  321.950923] Call Trace:
> +[  321.950927]  [<ffffffff814ba7d4>] dump_stack+0xa4/0xf0
> +[  321.950931]  [<ffffffff810e28fd>] ? print_irqtrace_events+0xcd/0xe0
> +[  321.950936]  [<ffffffff810bf495>] ___might_sleep+0x295/0x2b0
> +[  321.950939]  [<ffffffff810bf18f>] __might_sleep+0x4f/0xc0

This triggered on the might_sleep() in start_flush_work() because
something left interrupts enable.

Just strange.

-- Steve


> +[  321.950943]  [<ffffffff810a12ef>] start_flush_work+0x2f/0x2a0
> +[  321.950946]  [<ffffffff810a129c>] flush_work+0x5c/0x80
> +[  321.950949]  [<ffffffff810a125a>] ? flush_work+0x1a/0x80
> +[  321.950953]  [<ffffffff810e247d>] ? trace_hardirqs_off+0xd/0x10
> +[  321.950956]  [<ffffffff810a032a>] ? try_to_grab_pending+0x4a/0x260
> +[  321.950960]  [<ffffffff810a1717>] __cancel_work_timer+0x197/0x290
> +[  321.950963]  [<ffffffff81115b8d>] ? try_to_del_timer_sync+0xad/0xc0
> +[  321.950966]  [<ffffffff810a1578>] cancel_work_sync+0x18/0x20
> +[  321.950970]  [<ffffffffa00573d5>] usbhid_close+0x75/0xb0 [usbhid]
> +[  321.950977]  [<ffffffffa003a481>] hidinput_close+0x31/0x40 [hid]
> +[  321.950982]  [<ffffffffa003a450>] ? hidinput_open+0x40/0x40 [hid]
> +[  321.950985]  [<ffffffff8174fe48>] input_close_device+0x48/0x70
> +[  321.950988]  [<ffffffff81757f85>] evdev_cleanup+0xd5/0xe0
> +[  321.950990]  [<ffffffff81757b0c>] evdev_disconnect+0x2c/0x60
> +[  321.950993]  [<ffffffff8175173e>] __input_unregister_device+0xbe/0x190
> +[  321.950996]  [<ffffffff8175164a>] input_unregister_device+0x4a/0x80
> +[  321.951001]  [<ffffffffa003a29f>] hidinput_disconnect+0x8f/0xc0 [hid]
> +[  321.951007]  [<ffffffffa0034a30>] hid_device_remove+0xb0/0x130 [hid]
> +[  321.951010]  [<ffffffff816246bd>] __device_release_driver+0xfd/0x190
> +[  321.951014]  [<ffffffff816245aa>] device_release_driver+0x2a/0x40
> +[  321.951017]  [<ffffffff816224a3>] bus_remove_device+0x153/0x190
> +[  321.951020]  [<ffffffff8161f5fb>] device_del+0x1db/0x2b0
> +[  321.951025]  [<ffffffffa0033c1c>] hid_destroy_device+0x2c/0x60 [hid]
> +[  321.951029]  [<ffffffffa0058537>] usbhid_disconnect+0x67/0x90 [usbhid]
> +[  321.951033]  [<ffffffff81706ebf>] usb_unbind_interface+0xbf/0x2b0
> +[  321.951037]  [<ffffffff816246bd>] __device_release_driver+0xfd/0x190
> +[  321.951040]  [<ffffffff816245aa>] device_release_driver+0x2a/0x40
> +[  321.951043]  [<ffffffff816224a3>] bus_remove_device+0x153/0x190
> +[  321.951046]  [<ffffffff8161f5fb>] device_del+0x1db/0x2b0
> +[  321.951048]  [<ffffffff8161f6fc>] ? device_unregister+0x2c/0x40
> +[  321.951051]  [<ffffffff81704f6b>] usb_disable_device+0x10b/0x3b0
> +[  321.951054]  [<ffffffff816f6904>] usb_disconnect+0xf4/0x2c0
> +[  321.951057]  [<ffffffff816fbc3d>] hub_event+0xbad/0x15b0
> +[  321.951060]  [<ffffffff819426a2>] ? _raw_spin_unlock_irq+0x32/0x60
> +[  321.951063]  [<ffffffff810a7e0e>] process_one_work+0x4be/0x8d0
> +[  321.951065]  [<ffffffff810a7c8c>] ? process_one_work+0x33c/0x8d0
> +[  321.951068]  [<ffffffff810a757b>] worker_thread+0x5cb/0x750
> +[  321.951071]  [<ffffffff810a6fb0>] ? destroy_worker+0x110/0x110
> +[  321.951074]  [<ffffffff810ae1c5>] kthread+0x115/0x120
> +[  321.951077]  [<ffffffff810e248d>] ? trace_hardirqs_on+0xd/0x10
> +[  321.951080]  [<ffffffff810ae0b0>] ? flush_kthread_worker+0x80/0x80
> +[  321.951084]  [<ffffffff819435ff>] ret_from_fork+0x3f/0x70
> +[  321.951087]  [<ffffffff810ae0b0>] ? flush_kthread_worker+0x80/0x80
> 

  reply	other threads:[~2016-03-01 15:07 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1443427804-2957-1-git-send-email-sedat.dilek@gmail.com>
     [not found] ` <alpine.LNX.2.00.1509281329261.30132@pobox.suse.cz>
     [not found]   ` <CA+icZUWXcNue2kx0nLzAmJeaYVgcpqT3Zz8cuRkQDcT93n4U+w@mail.gmail.com>
     [not found]     ` <alpine.LNX.2.00.1509291117280.30132@pobox.suse.cz>
     [not found]       ` <CA+icZUWH2vR_vpYu4hCS578U3ssmoiF0pLYUfM-Xo-57e8uN=g@mail.gmail.com>
     [not found]         ` <alpine.LNX.2.00.1509300918090.30132@pobox.suse.cz>
     [not found]           ` <20150930045655.1c52eecd@gandalf.local.home>
     [not found]             ` <CA+icZUUnoD8_=Wm+OM2pN0ZS-rwqjLHtTw5xCWe5epNqSTZSiQ@mail.gmail.com>
     [not found]               ` <20150930061351.06f06abd@gandalf.local.home>
     [not found]                 ` <CA+icZUXSzScTmMgLZwPQq9RMH9cUsD5_iDxKTVuG0rrGqH-8Cw@mail.gmail.com>
     [not found]                   ` <20150930220153.7a75c4fc@grimm.local.home>
     [not found]                     ` <CA+icZUV7pxXoApuLdc7Z=kMHiKG=diHNqsnR5-MHpER=XkjQVQ@mail.gmail.com>
     [not found]                       ` <CA+icZUUyaHqHP2v52juhGhoTNS9xX7LT2YxkOppLz6f9Z+FBEA@mail.gmail.com>
     [not found]                         ` <CA+icZUWagGMVNs5gBPRBhYO0LsY2A1hK3KSLabp9ZpDVOTmtig@mail.gmail.com>
     [not found]                           ` <20151012205755.7ad86f4c@grimm.local.home>
2016-03-01 10:05                             ` Sedat Dilek
2016-03-01 15:07                               ` Steven Rostedt [this message]
2016-03-01 15:17                                 ` Peter Zijlstra
2016-03-02 15:00                                   ` Sedat Dilek
2016-03-02 15:17                                     ` Peter Zijlstra
2016-03-02 15:34                                       ` Sedat Dilek
2016-03-02 15:53                                       ` Sedat Dilek
2016-03-02 15:56                                         ` Steven Rostedt
2016-03-02 16:08                                           ` Sedat Dilek
2016-03-02 16:11                                             ` Sedat Dilek
2016-03-02 16:21                                               ` Sedat Dilek
2016-03-02 16:24                                         ` Peter Zijlstra
2016-03-02 16:35                                           ` Steven Rostedt
2016-03-02 16:42                                             ` Peter Zijlstra
2016-03-02 16:42                                           ` Sedat Dilek
2016-03-02 16:52                                             ` Sedat Dilek
2016-03-01 15:59                               ` Alan Stern
2016-03-02  6:25                                 ` Sedat Dilek
2016-03-04 16:04                                   ` Alan Stern
2016-03-05 22:30                                     ` Sedat Dilek
2016-03-06  8:51                                       ` Sedat Dilek
2016-03-06 17:23                                       ` Alan Stern
2016-03-02  6:36                                 ` Sedat Dilek
2016-03-02  8:34                                   ` Sedat Dilek
2016-03-02  8:37                                     ` Jiri Kosina
2016-03-02  9:11                                       ` Sedat Dilek
2016-03-07 15:59 Sedat Dilek
2016-03-07 16:28 ` Sedat Dilek
2016-03-07 16:41 ` Alan Stern
2016-03-07 17:03   ` Steven Rostedt
2016-03-07 17:05   ` Jiri Kosina
2016-03-07 17:15     ` Sedat Dilek
2016-03-07 17:27       ` David Laight
2016-03-07 18:07         ` Alan Stern
2016-03-07 18:30           ` Linus Torvalds
2016-06-27 19:50             ` Sedat Dilek
2016-06-27 20:03               ` Sedat Dilek
2016-06-27 20:14               ` Linus Torvalds
2016-06-27 20:27                 ` Sedat Dilek
2016-06-27 20:36                   ` Linus Torvalds
2016-03-07 17:11   ` Steven Rostedt
2016-03-07 17:18   ` Sedat Dilek
2016-03-07 17:24     ` Jiri Kosina
2016-03-07 17:30       ` Steven Rostedt
2016-03-07 18:04         ` Andy Lutomirski
2016-03-07 19:10           ` Steven Rostedt

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=20160301100740.759440b7@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=balbi@ti.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jiangshanlai@gmail.com \
    --cc=jikos@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=sedat.dilek@gmail.com \
    --cc=stern@rowland.harvard.edu \
    --cc=tj@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

all inboxes | Powered by JetHome®