All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/50] USB: cleanup spin_lock in URB->complete()
@ 2013-07-11  9:05 Ming Lei
  2013-07-11  9:05 ` [PATCH 01/50] USB: devio: spin_lock in complete() cleanup Ming Lei
                   ` (50 more replies)
  0 siblings, 51 replies; 86+ messages in thread
From: Ming Lei @ 2013-07-11  9:05 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-usb, Oliver Neukum, Alan Stern, linux-input,
	linux-bluetooth, netdev, linux-wireless, linux-media, alsa-devel

Hi,

As we are going to run URB->complete() in tasklet context[1][2], and
hard interrupt may be enabled when running URB completion handler[3],
so we might need to disable interrupt when acquiring one lock in
the completion handler for the below reasons:

- URB->complete() holds a subsystem wide lock which may be acquired
in another hard irq context, and the subsystem wide lock is acquired
by spin_lock()/read_lock()/write_lock() in complete()

- URB->complete() holds a private lock with spin_lock()/read_lock()/write_lock()
but driver may export APIs to make other drivers acquire the same private
lock in its interrupt handler.

For the sake of safety and making the change simple, this patch set
converts all spin_lock()/read_lock()/write_lock() in completion handler
path into their irqsave version mechanically.

But if you are sure the above two cases do not happen in your driver,
please let me know and I can drop the unnecessary change.

Also if you find some conversions are missed, also please let me know so
that I can add it in the next round.


[1], http://marc.info/?l=linux-usb&m=137286322526312&w=2
[2], http://marc.info/?l=linux-usb&m=137286326726326&w=2
[3], http://marc.info/?l=linux-usb&m=137286330626363&w=2

 drivers/bluetooth/bfusb.c                     |   12 ++++----
 drivers/bluetooth/btusb.c                     |    5 ++--
 drivers/hid/usbhid/hid-core.c                 |    5 ++--
 drivers/input/misc/cm109.c                    |   10 ++++---
 drivers/isdn/hardware/mISDN/hfcsusb.c         |   36 ++++++++++++-----------
 drivers/media/dvb-core/dvb_demux.c            |   17 +++++++----
 drivers/media/usb/cx231xx/cx231xx-audio.c     |    6 ++++
 drivers/media/usb/cx231xx/cx231xx-core.c      |   10 ++++---
 drivers/media/usb/cx231xx/cx231xx-vbi.c       |    5 ++--
 drivers/media/usb/em28xx/em28xx-audio.c       |    3 ++
 drivers/media/usb/em28xx/em28xx-core.c        |    5 ++--
 drivers/media/usb/sn9c102/sn9c102_core.c      |    7 +++--
 drivers/media/usb/tlg2300/pd-alsa.c           |    3 ++
 drivers/media/usb/tlg2300/pd-video.c          |    5 ++--
 drivers/media/usb/tm6000/tm6000-video.c       |    5 ++--
 drivers/net/usb/cdc-phonet.c                  |    5 ++--
 drivers/net/usb/hso.c                         |   38 ++++++++++++++-----------
 drivers/net/usb/kaweth.c                      |    7 +++--
 drivers/net/usb/rtl8150.c                     |    5 ++--
 drivers/net/wireless/ath/ath9k/hif_usb.c      |   29 ++++++++++---------
 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c |    9 +++---
 drivers/net/wireless/ath/ath9k/wmi.c          |   11 +++----
 drivers/net/wireless/ath/carl9170/rx.c        |    5 ++--
 drivers/net/wireless/libertas/if_usb.c        |    5 ++--
 drivers/net/wireless/libertas_tf/if_usb.c     |    6 ++--
 drivers/net/wireless/zd1211rw/zd_usb.c        |   21 ++++++++------
 drivers/staging/bcm/InterfaceRx.c             |    5 ++--
 drivers/staging/btmtk_usb/btmtk_usb.c         |    5 ++--
 drivers/staging/ced1401/usb1401.c             |   35 ++++++++++++-----------
 drivers/staging/vt6656/usbpipe.c              |    9 +++---
 drivers/usb/class/cdc-wdm.c                   |   16 +++++++----
 drivers/usb/class/usblp.c                     |   10 ++++---
 drivers/usb/core/devio.c                      |    5 ++--
 drivers/usb/misc/adutux.c                     |   10 ++++---
 drivers/usb/misc/iowarrior.c                  |    5 ++--
 drivers/usb/misc/ldusb.c                      |    7 +++--
 drivers/usb/misc/legousbtower.c               |    5 ++--
 drivers/usb/misc/usbtest.c                    |   10 ++++---
 drivers/usb/misc/uss720.c                     |    6 +++-
 drivers/usb/serial/cyberjack.c                |   15 ++++++----
 drivers/usb/serial/digi_acceleport.c          |   23 ++++++++-------
 drivers/usb/serial/io_edgeport.c              |   14 +++++----
 drivers/usb/serial/io_ti.c                    |    5 ++--
 drivers/usb/serial/mos7720.c                  |    5 ++--
 drivers/usb/serial/mos7840.c                  |    5 ++--
 drivers/usb/serial/quatech2.c                 |    5 ++--
 drivers/usb/serial/sierra.c                   |    9 +++---
 drivers/usb/serial/symbolserial.c             |    5 ++--
 drivers/usb/serial/ti_usb_3410_5052.c         |    9 +++---
 drivers/usb/serial/usb_wwan.c                 |    5 ++--
 sound/usb/caiaq/audio.c                       |    5 ++--
 sound/usb/midi.c                              |    5 ++--
 sound/usb/misc/ua101.c                        |   14 +++++++--
 sound/usb/usx2y/usbusx2yaudio.c               |    4 +++
 54 files changed, 322 insertions(+), 209 deletions(-)


Thanks,
--
Ming Lei


^ permalink raw reply	[flat|nested] 86+ messages in thread

end of thread, other threads:[~2013-07-27  9:34 UTC | newest]

Thread overview: 86+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-11  9:05 [PATCH 00/50] USB: cleanup spin_lock in URB->complete() Ming Lei
2013-07-11  9:05 ` [PATCH 01/50] USB: devio: spin_lock in complete() cleanup Ming Lei
2013-07-11  9:05 ` [PATCH 02/50] USB: cdc-wdm: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 03/50] USB: usblp: " Ming Lei
2013-07-11  9:05 ` [PATCH 04/50] USB: adutux: " Ming Lei
2013-07-11  9:05 ` [PATCH 05/50] USB: misc: uss720: " Ming Lei
2013-07-11 12:15   ` Sergei Shtylyov
2013-07-11 12:15     ` Sergei Shtylyov
2013-07-11  9:05 ` [PATCH 06/50] USB: iowarrior: " Ming Lei
2013-07-11  9:05 ` [PATCH 07/50] USB: ldusb: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 08/50] USB: legousbtower: " Ming Lei
2013-07-11 12:18   ` Sergei Shtylyov
2013-07-11 12:18     ` Sergei Shtylyov
2013-07-11 12:36     ` Oliver Neukum
2013-07-11 13:47       ` Sergei Shtylyov
2013-07-11 12:42     ` Ming Lei
2013-07-11 12:42       ` Ming Lei
2013-07-11  9:05 ` [PATCH 09/50] USB: usbtest: " Ming Lei
2013-07-11  9:05 ` [PATCH 10/50] USB: serial: cyberjack: " Ming Lei
2013-07-11  9:05 ` [PATCH 11/50] USB: serial: digi_acceleportldusb: " Ming Lei
2013-07-11  9:05 ` [PATCH 12/50] USB: serial: io_edgeport: " Ming Lei
2013-07-11  9:05 ` [PATCH 13/50] USB: serial: io_ti: " Ming Lei
2013-07-11  9:05 ` [PATCH 14/50] USB: serial: mos7720: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 15/50] USB: serial: mos77840: " Ming Lei
2013-07-11  9:05 ` [PATCH 16/50] USB: serial: quatech2: " Ming Lei
2013-07-11  9:05 ` [PATCH 17/50] USB: serial: sierra: " Ming Lei
2013-07-11 13:02   ` Sergei Shtylyov
2013-07-11  9:05 ` [PATCH 18/50] USB: serial: symbolserial: " Ming Lei
2013-07-11  9:05 ` [PATCH 19/50] USB: serial: ti_usb_3410_5052: " Ming Lei
2013-07-11  9:05 ` [PATCH 20/50] USB: serial: usb_wwan: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 21/50] hid: usbhid: " Ming Lei
2013-07-11  9:05 ` [PATCH 22/50] BT: btusb: " Ming Lei
2013-07-11  9:05 ` [PATCH 23/50] BT: bfusb: read_lock " Ming Lei
2013-07-11  9:05 ` [PATCH 24/50] input: cm109: spin_lock " Ming Lei
2013-07-11  9:05 ` [PATCH 25/50] ISDN: hfcsusb: " Ming Lei
2013-07-11  9:05 ` [PATCH 26/50] USBNET: cdc-phonet: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 27/50] USBNET: hso: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 28/50] USBNET: kaweth: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 29/50] USBNET: rtl8150: " Ming Lei
2013-07-11  9:05   ` Ming Lei
2013-07-11  9:05 ` [PATCH 30/50] wireless: ath9k: " Ming Lei
2013-07-11  9:05 ` [PATCH 31/50] wireless: zd1211rw: " Ming Lei
2013-07-11  9:05 ` [PATCH 32/50] wireless: ath: carl9170: " Ming Lei
2013-07-11  9:05 ` [PATCH 33/50] wireless: libertas: " Ming Lei
2013-07-11  9:05 ` [PATCH 34/50] wireless: libertas_tf: " Ming Lei
2013-07-11  9:05 ` [PATCH 35/50] media: usb: cx231xx: " Ming Lei
2013-07-26 14:28   ` Hans Verkuil
2013-07-27  9:34     ` Ming Lei
2013-07-11  9:05 ` [PATCH 36/50] media: usb: em28xx: " Ming Lei
2013-07-11 12:42   ` Devin Heitmueller
2013-07-11  9:06 ` [PATCH 37/50] media: usb: sn9x102: " Ming Lei
2013-07-11  9:06 ` [PATCH 38/50] media: usb: tlg2300: " Ming Lei
2013-07-11  9:06 ` [PATCH 39/50] media: usb: tm6000: " Ming Lei
2013-07-11  9:06 ` [PATCH 40/50] media: dvb-core: " Ming Lei
2013-07-11  9:06 ` [PATCH 41/50] media: usb: em28xx: make sure irq disabled before acquiring lock Ming Lei
2013-07-11  9:06 ` [PATCH 42/50] media: usb: tlg2300: spin_lock in complete() cleanup Ming Lei
2013-07-11 13:13   ` Sergei Shtylyov
2013-07-11  9:06 ` [PATCH 43/50] sound: usb: midi: " Ming Lei
2013-07-11  9:06 ` [PATCH 44/50] sound: usb: caiaq: " Ming Lei
2013-07-11 13:12   ` Sergei Shtylyov
2013-07-11 14:06   ` Daniel Mack
2013-07-11  9:06 ` [PATCH 45/50] sound: usb: usx2y: " Ming Lei
2013-07-11 13:08   ` Sergei Shtylyov
2013-07-11 13:50     ` Takashi Iwai
2013-07-11 13:50       ` Takashi Iwai
2013-07-11 14:13       ` Ming Lei
2013-07-11 14:34         ` Takashi Iwai
2013-07-11 14:34           ` Takashi Iwai
2013-07-11 14:52           ` Ming Lei
2013-07-11  9:06 ` [PATCH 46/50] Sound: usb: ua101: " Ming Lei
2013-07-11  9:06   ` Ming Lei
2013-07-11 13:10   ` Sergei Shtylyov
2013-07-11  9:06 ` [PATCH 47/50] staging: btmtk_usb: " Ming Lei
2013-07-11  9:06   ` Ming Lei
2013-07-11  9:06 ` [PATCH 48/50] staging: bcm: " Ming Lei
2013-07-11  9:06 ` [PATCH 49/50] staging: ced1401: " Ming Lei
2013-07-11  9:06 ` [PATCH 50/50] staging: vt6656: " Ming Lei
2013-07-14 13:17 ` [PATCH 00/50] USB: cleanup spin_lock in URB->complete() Andy Walls
2013-07-14 14:33   ` Ming Lei

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.