linux/drivers/net
Sebastian Siewior 4231d47e6f net/usbnet: avoid recursive locking in usbnet_stop()
|kernel BUG at kernel/rtmutex.c:724!
|[<c029599c>] (rt_spin_lock_slowlock+0x108/0x2bc) from [<c01c2330>] (defer_bh+0x1c/0xb4)
|[<c01c2330>] (defer_bh+0x1c/0xb4) from [<c01c3afc>] (rx_complete+0x14c/0x194)
|[<c01c3afc>] (rx_complete+0x14c/0x194) from [<c01cac88>] (usb_hcd_giveback_urb+0xa0/0xf0)
|[<c01cac88>] (usb_hcd_giveback_urb+0xa0/0xf0) from [<c01e1ff4>] (musb_giveback+0x34/0x40)
|[<c01e1ff4>] (musb_giveback+0x34/0x40) from [<c01e2b1c>] (musb_advance_schedule+0xb4/0x1c0)
|[<c01e2b1c>] (musb_advance_schedule+0xb4/0x1c0) from [<c01e2ca8>] (musb_cleanup_urb.isra.9+0x80/0x8c)
|[<c01e2ca8>] (musb_cleanup_urb.isra.9+0x80/0x8c) from [<c01e2ed0>] (musb_urb_dequeue+0xec/0x108)
|[<c01e2ed0>] (musb_urb_dequeue+0xec/0x108) from [<c01cbb90>] (unlink1+0xbc/0xcc)
|[<c01cbb90>] (unlink1+0xbc/0xcc) from [<c01cc2ec>] (usb_hcd_unlink_urb+0x54/0xa8)
|[<c01cc2ec>] (usb_hcd_unlink_urb+0x54/0xa8) from [<c01c2a84>] (unlink_urbs.isra.17+0x2c/0x58)
|[<c01c2a84>] (unlink_urbs.isra.17+0x2c/0x58) from [<c01c2b44>] (usbnet_terminate_urbs+0x94/0x10c)
|[<c01c2b44>] (usbnet_terminate_urbs+0x94/0x10c) from [<c01c2d68>] (usbnet_stop+0x100/0x15c)
|[<c01c2d68>] (usbnet_stop+0x100/0x15c) from [<c020f718>] (__dev_close_many+0x94/0xc8)

defer_bh() takes the lock which is hold during unlink_urbs(). The safe
walk suggest that the skb will be removed from the list and this is done
by defer_bh() so it seems to be okay to drop the lock here.

Cc: stable@kernel.org
Reported-by: Aníbal Almeida Pinto <anibal.pinto@efacec.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Oliver Neukum <oliver@neukum.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-03-08 00:49:29 -08:00
..
appletalk
arcnet net: Revert ARCNET and PHYLIB to tristate options 2011-11-26 14:36:49 -05:00
bonding bonding: fix enslaving in alb mode when link down 2012-01-18 20:59:53 -05:00
caif caif-hsi: Set default MTU to 4096 2012-03-06 16:27:45 -05:00
can can: sja1000: fix isr hang when hw is unplugged under load 2012-02-20 11:36:56 +01:00
cris
dsa drivers/net: dsa/mv88e6xxx.c files need linux/module.h 2012-01-24 15:44:50 -05:00
ethernet mlx4_core: fix bug in modify_cq wrapper for resize flow. 2012-03-08 00:28:01 -08:00
fddi
hamradio
hippi net: drivers/net/hippi/Kconfig should be sourced 2011-11-09 15:55:06 -05:00
hyperv net/hyperv: Fix the page buffer when an RNDIS message goes beyond page boundary 2012-02-02 14:35:12 -05:00
irda Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-01-14 13:05:21 -08:00
phy phy: IC+101G and PHY_HAS_INTERRUPT flag 2012-02-23 17:14:26 -05:00
plip
ppp ppp: fix 'ppp_mp_reconstruct bad seq' errors 2012-02-24 17:53:21 -05:00
slip
team team: send only changed options/ports via netlink 2012-01-24 15:51:00 -05:00
tokenring CONFIG_TR/CONFIG_LLC: work around the problem with select 2012-02-07 13:06:14 -05:00
usb net/usbnet: avoid recursive locking in usbnet_stop() 2012-03-08 00:49:29 -08:00
vmxnet3 vmxnet3: Fix transport header size 2012-03-01 22:09:41 -05:00
wan module_param: make bool parameters really bool (net & drivers/net) 2011-12-19 22:27:29 -05:00
wimax Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
wireless iwlwifi: fix wowlan suspend 2012-03-05 14:44:39 -05:00
xen-netback Merge branch 'stable/for-linus-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen 2012-01-10 10:09:59 -08:00
dummy.c net: remove NETIF_F_NO_CSUM feature bit 2011-11-16 17:43:12 -05:00
eql.c
ifb.c net: remove NETIF_F_NO_CSUM feature bit 2011-11-16 17:43:12 -05:00
Kconfig Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging 2012-01-09 12:18:17 -08:00
LICENSE.SRC
loopback.c net: remove NETIF_F_NO_CSUM feature bit 2011-11-16 17:43:12 -05:00
macvlan.c macvlan: fix a possible use after free 2012-01-23 13:56:18 -05:00
macvtap.c macvtap: Fix macvtap_get_queue to use rxhash first 2011-12-20 13:45:55 -05:00
Makefile Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging 2012-01-09 12:18:17 -08:00
mdio.c
mii.c net: Change mii to ethtool advertisement function names 2011-11-21 15:27:19 -05:00
netconsole.c
rionet.c drivers/net/rionet.c: fix ethernet address macros for LE platforms 2011-11-02 16:07:01 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c Sweep away N/A fw_version dustbunnies from the .get_drvinfo routine of a number of drivers 2011-11-22 16:43:32 -05:00
veth.c veth: Enforce minimum size of VETH_INFO_PEER 2012-02-15 14:59:20 -05:00
virtio_net.c virtio: net: Add freeze, restore handlers to support S4 2012-01-12 15:44:46 +10:30
xen-netfront.c xen-netfront: correct MAX_TX_TARGET calculation. 2012-01-26 13:48:35 -05:00