From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f66.google.com ([209.85.215.66]:34193 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750740AbcEZQ0s (ORCPT ); Thu, 26 May 2016 12:26:48 -0400 From: Felipe Balbi To: Bin Liu Cc: linux-usb@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH v2] usb: gadget: fix spinlock dead lock in gadgetfs In-Reply-To: <20160526153842.GA26723@uda0271908> References: <1464203914-17339-1-git-send-email-b-liu@ti.com> <20160525192458.GA12150@uda0271908> <87bn3tqqpd.fsf@linux.intel.com> <20160526153842.GA26723@uda0271908> Date: Thu, 26 May 2016 19:26:44 +0300 Message-ID: <87mvnclr97.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: stable-owner@vger.kernel.org List-ID: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable >> Bin Liu writes: >> > On Wed, May 25, 2016 at 02:18:34PM -0500, Bin Liu wrote: >> >> [ 40.467381] =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D >> >> [ 40.473013] [ INFO: possible recursive locking detected ] >> >> [ 40.478651] 4.6.0-08691-g7f3db9a #37 Not tainted >> >> [ 40.483466] --------------------------------------------- >> >> [ 40.489098] usb/733 is trying to acquire lock: >> >> [ 40.493734] (&(&dev->lock)->rlock){-.....}, at: [] ep0_= complete+0x18/0xdc [gadgetfs] >> >> [ 40.502882] >> >> [ 40.502882] but task is already holding lock: >> >> [ 40.508967] (&(&dev->lock)->rlock){-.....}, at: [] ep0_= read+0x20/0x5e0 [gadgetfs] >> >> [ 40.517811] >> >> [ 40.517811] other info that might help us debug this: >> >> [ 40.524623] Possible unsafe locking scenario: >> >> [ 40.524623] >> >> [ 40.530798] CPU0 >> >> [ 40.533346] ---- >> >> [ 40.535894] lock(&(&dev->lock)->rlock); >> >> [ 40.540088] lock(&(&dev->lock)->rlock); >> >> [ 40.544284] >> >> [ 40.544284] *** DEADLOCK *** >> >> [ 40.544284] >> >> [ 40.550461] May be due to missing lock nesting notation >> >> [ 40.550461] >> >> [ 40.557544] 2 locks held by usb/733: >> >> [ 40.561271] #0: (&f->f_pos_lock){+.+.+.}, at: [] __fdg= et_pos+0x40/0x48 >> >> [ 40.569219] #1: (&(&dev->lock)->rlock){-.....}, at: []= ep0_read+0x20/0x5e0 [gadgetfs] >> >> [ 40.578523] >> >> [ 40.578523] stack backtrace: >> >> [ 40.583075] CPU: 0 PID: 733 Comm: usb Not tainted 4.6.0-08691-g7f3= db9a #37 >> >> [ 40.590246] Hardware name: Generic AM33XX (Flattened Device Tree) >> >> [ 40.596625] [] (unwind_backtrace) from [] (sho= w_stack+0x10/0x14) >> >> [ 40.604718] [] (show_stack) from [] (dump_stac= k+0xb0/0xe4) >> >> [ 40.612267] [] (dump_stack) from [] (__lock_ac= quire+0xf68/0x1994) >> >> [ 40.620440] [] (__lock_acquire) from [] (lock_= acquire+0xd8/0x238) >> >> [ 40.628621] [] (lock_acquire) from [] (_raw_sp= in_lock_irqsave+0x38/0x4c) >> >> [ 40.637440] [] (_raw_spin_lock_irqsave) from [= ] (ep0_complete+0x18/0xdc [gadgetfs]) >> >> [ 40.647339] [] (ep0_complete [gadgetfs]) from [] (musb_g_giveback+0x118/0x1b0 [musb_hdrc]) >> >> [ 40.657842] [] (musb_g_giveback [musb_hdrc]) from [] (musb_g_ep0_queue+0x16c/0x188 [musb_hdrc]) >> >> [ 40.668772] [] (musb_g_ep0_queue [musb_hdrc]) from [] (ep0_read+0x544/0x5e0 [gadgetfs]) >> >> [ 40.678963] [] (ep0_read [gadgetfs]) from [] (= __vfs_read+0x20/0x110) >> >> [ 40.687414] [] (__vfs_read) from [] (vfs_read+= 0x88/0x114) >> >> [ 40.694864] [] (vfs_read) from [] (SyS_read+0x= 44/0x9c) >> >> [ 40.702051] [] (SyS_read) from [] (ret_fast_sy= scall+0x0/0x1c) >> >>=20 >> >> Cc: # v3.16+ >> >> Signed-off-by: Bin Liu >> >> --- >> >> v2: >> >> - lock protects setup_req(), only unlock for usb_ep_queue() >> >> - use GFP_KERNEL in usb_ep_queue() >> >> - fix the same in two places in gadgetfs_setup() too >> > >> > Never mind. Sent the patch too soon. It gives the following problem. >> > >> > [ 179.810367] WARNING: CPU: 0 PID: 0 at kernel/locking/lockdep.c:2724 >> > _raw_spin_unlock_irq+0x24/0x2c >> > [ 179.819719] DEBUG_LOCKS_WARN_ON(current->hardirq_context) >>=20 >> thanks for letting us know. I'm dropping this from my queue. Please >> resend final patch once you have it ;-) > > It turned out to be a very easy fix ;) > > I have v3 ready, but checkpatch.pl complains the followings. I don't > think this patch should fix them, since the whole driver is coded like > that. Any comments? Let's fix it with a follow-up patch. Can you do that one too, btw? I can do it, if you don't wanna deal with that; but I'm also open to receiving free patches heh =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXRyPEAAoJEIaOsuA1yqRETAwQALD4Vn71BDEen4IET43435RK 5+A9Yd8skXK9a5HLHenQGHaFZPDxLSOpfSGnP+4CCygz71Kd0KNwKXA0BKUl2t8K r6HF2JVXHHPFyyMxAHQPPicGOn9HSwPlnNO7m21b+vGlpDhdml3H71GpdhyEOSkw lmHfZQLOskz/LO82STJeXHK5MBh44wHXbF2aGwI+G3DRK6xwPf1yuwxb+/goBi7q LLhpQ1GYfeF0Ev21vzz6C8aqURpJqkf03G8X/F27SkZbELV+qr4cWbwTQvXvLwKs jjMOLFkEsOsfevlnvAwq6Pz+nd66+jm/s+wfJjHA4nPAXtkqOPhulUrQTWhMLDQn 3mq+inp68IxUAcRh5vpMBIDIkjTapBGErKy+nxIMwm7/OeN2NYpUETMBOg8uCT0s ap64Rvd+CQTKjzTd8rZ2IuEZOhJigq+/1B1s0FMEZC4rOtYFCC3Fc94NxV75TavL 5tqkGOd77DD8Fs7oe86ENWCh1moDLZt610EuRqFm9Nlvo8SG56CSsmAQEA9EgG4c YABhb5V4gQt/NWDD2qlJMApOiqc+XjTUe35seUNhJQuWYA3IRJ8gumk3nSUgoHwv B1oM86KgHLb/Ed/w2nQmQJc9cNCcg0u7XJZ76sYC2uxjQW5ZoKJdtFvPxNF89T6X l99DIfY94PclZrxSePoZ =VB5b -----END PGP SIGNATURE----- --=-=-=--