linux/drivers
Neil Horman e843fa5088 bonding: Fix deadlock in bonding driver resulting from internal locking when using netpoll
The monitoring paths in the bonding driver take write locks that are shared by
the tx path.  If netconsole is in use, these paths can call printk which puts us
in the netpoll tx path, which, if netconsole is attached to the bonding driver,
result in deadlock (the xmit_lock guards are useless in netpoll_send_skb, as the
monitor paths in the bonding driver don't claim the xmit_lock, nor should they).
The solution is to use a per cpu flag internal to the driver to indicate when a
cpu is holding the lock in a path that might recusrse into the tx path for the
driver via netconsole.  By checking this flag on transmit, we can defer the
sending of the netconsole frames until a later time using the retransmit feature
of netpoll_send_skb that is triggered on the return code NETDEV_TX_BUSY.  I've
tested this and am able to transmit via netconsole while causing failover
conditions on the bond slave links.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-10-18 08:32:07 -07:00
..
accessibility
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-10-01 10:54:58 -07:00
amba
ata ahci: fix module refcount breakage introduced by libahci split 2010-09-28 15:14:51 -04:00
atm Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-10-11 12:30:34 -07:00
auxdisplay
base PM: Prevent waiting forever on asynchronous resume after failing suspend 2010-09-09 00:49:43 +02:00
block Fix pktcdvd ioctl dev_minor range check 2010-09-27 16:29:06 -07:00
bluetooth
cdrom
char ipmi: fix hardcoded ipmi device exit path warning 2010-09-22 17:22:40 -07:00
clocksource
connector
cpufreq
cpuidle cpuidle: Fix typos 2010-09-28 23:30:38 -04:00
crypto
dca dca: disable dca on IOAT ver.3.0 multiple-IOH platforms 2010-09-17 20:08:21 -07:00
dio
dma dmaengine: fix interrupt clearing for mv_xor 2010-09-23 14:14:22 -07:00
edac i7core_edac: fix panic in udimm sysfs attributes registration 2010-10-01 10:50:58 -07:00
eisa
firewire Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-10-06 19:39:31 -07:00
firmware
gpio gpio: sx150x: correct and refine reset-on-probe behavior 2010-09-09 18:57:24 -07:00
gpu Merge branch 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel 2010-10-04 11:10:26 -07:00
hid HID: fix hiddev's use of usb_find_interface 2010-09-14 10:58:42 +02:00
hwmon hwmon: f71882fg: use a muxed resource lock for the Super I/O port 2010-10-03 05:57:04 -07:00
i2c i2c-s3c2410: fix calculation of SDA line delay 2010-10-01 00:00:35 +01:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 2010-09-19 11:06:34 -07:00
idle intel_idle: Voluntary leave_mm before entering deeper 2010-09-30 21:19:22 -04:00
ieee1394 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-09-09 22:27:33 -07:00
ieee802154
infiniband infiniband: fix mlx4 kconfig dependency warning 2010-10-16 11:13:25 -07:00
input
isdn Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-10-11 12:30:34 -07:00
leds leds: leds-ns2: fix locking 2010-09-19 22:43:42 -04:00
lguest
macintosh
mca
md md: fix v1.x metadata update when a disk is missing. 2010-09-17 13:53:28 +10:00
media
memstick
message
mfd mfd: Fix max8925 irq control bit incorrect setting 2010-09-29 10:14:53 +02:00
misc vmware balloon: rename module 2010-09-22 17:22:38 -07:00
mmc mmc: sdhci-s3c: fix NULL ptr access in sdhci_s3c_remove 2010-09-26 16:27:05 -04:00
mtd fix OMAP2 MTD build failure 2010-09-29 13:17:56 -07:00
net bonding: Fix deadlock in bonding driver resulting from internal locking when using netpoll 2010-10-18 08:32:07 -07:00
nubus
of
oprofile
parisc
parport
pci Merge branch 'meego-7093' into idle-release 2010-09-28 23:30:58 -04:00
pcmcia pcmcia: pd6729: Fix error path 2010-09-26 15:54:25 +02:00
platform thinkpad-acpi: avoid keymap pitfall 2010-09-23 15:42:04 -04:00
pnp
power apm_power: Add missing break statement 2010-09-08 14:35:10 +04:00
pps
ps3
rapidio
regulator regulator: max8649 - fix setting extclk_freq 2010-10-02 14:19:45 +01:00
rtc rtc: s3c: balance state changes of wakeup flag 2010-09-22 17:22:40 -07:00
s390 s390: ctcm_mpc: Fix build after netdev refcount changes. 2010-10-13 09:11:26 -07:00
sbus
scsi cnic: Defer iscsi connection cleanup 2010-10-14 10:45:54 -07:00
serial drivers/serial/mrst_max3110.c needs linux/irq.h 2010-10-01 10:50:58 -07:00
sfi
sh
sn
spi of/spi: Fix OF-style driver binding of spi devices 2010-10-02 21:28:29 -06:00
ssb
staging Staging: ti-st: remove st_get_plat_device 2010-09-24 11:04:32 -07:00
tc
telephony
thermal
uio
usb Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-10-06 19:39:31 -07:00
uwb uwb: use '%pM' format to print MAC address 2010-09-13 20:02:54 -07:00
vhost vhost: max s/g to match qemu 2010-10-05 13:33:43 +02:00
video Merge master.kernel.org:/home/rmk/linux-2.6-arm 2010-09-27 12:32:36 -07:00
virtio
vlynq
w1
watchdog watchdog: Enable NXP LPC32XX support in Kconfig (resend) 2010-09-15 18:43:58 +00:00
xen xen: do not set xenstored_ready before xenbus_probe on hvm 2010-10-05 13:37:28 +01:00
zorro
Kconfig
Makefile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2010-09-17 10:23:08 -07:00