You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux
Andrea Merello b81c04382b lantiq: fix sleep with spinlock held in xrx200 network driver
In the xrx200_close() function we call napi_disable(), that could
sleep, with priv->hw->chan[i].lock held. This could lead to deadlock
and causes the kernel to complain.

Look at the code I couldn't convince myself about why we
need to protect that specific code part with the lock. IMHO there
seems no reason to protect the refcount variables, because AFAIK
ndo_close() and ndo_open() callbacks are already called with a
semaphore held. Neither I could figure out why napi_disable() have to
be called with that lock held. The only remaining code part for
which I could guess the lock is useful for is ltq_dma_close()
function call.

This patch reduces the lock to the said function call, avoiding the
sleep-with-spinlock-held situation

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
[fold into 0025-NET-MIPS-lantiq-adds-xrx200-net.patch, backport to
kernel 4.4]
Signed-off-by: Mathias Kresin <dev@kresin.me>
7 years ago
..
adm5120 treewide: populate boardname and model earlier 7 years ago
adm8668 build: fix subtarget descriptions 8 years ago
apm821xx treewide: use only board_name function to get name 7 years ago
ar7 ar7: diag.sh: use common status_led_* functions 7 years ago
ar71xx treewide: use only board_name function to get name 7 years ago
arc770 treewide: drop target board_name functions 7 years ago
archs38 treewide: drop target board_name functions 7 years ago
armvirt kernel: cleanup CONFIG_SCHED_HRTICK 7 years ago
at91 treewide: drop target board_name functions 7 years ago
ath25 kernel: cleanup CONFIG_SCHED_HRTICK 7 years ago
au1000 kernel: update kernel 3.18 to version 3.18.43 8 years ago
bcm53xx treewide: use only board_name function to get name 7 years ago
brcm47xx treewide: use only board_name function to get name 7 years ago
brcm63xx treewide: drop target board_name functions 7 years ago
brcm2708 treewide: drop target board_name functions 7 years ago
cns3xxx treewide: drop target board_name functions 7 years ago
gemini kernel: use .patch extension for all patches 7 years ago
generic kernel: update kernel 4.9 to 4.9.37 7 years ago
imx6 treewide: drop target board_name functions 7 years ago
ipq806x treewide: use only board_name function to get name 7 years ago
ixp4xx treewide: drop target board_name functions 7 years ago
kirkwood treewide: drop target board_name functions 7 years ago
lantiq lantiq: fix sleep with spinlock held in xrx200 network driver 7 years ago
layerscape kernel: cleanup CONFIG_SCHED_HRTICK 7 years ago
malta kernel: cleanup CONFIG_SCHED_HRTICK 7 years ago
mcs814x treewide: drop target board_name functions 7 years ago
mediatek treewide: use only board_name function to get name 7 years ago
mpc85xx treewide: drop target board_name functions 7 years ago
mvebu treewide: drop target board_name functions 7 years ago
mxs treewide: drop target board_name functions 7 years ago
octeon treewide: use only board_name function to get name 7 years ago
omap kernel: cleanup CONFIG_SCHED_HRTICK 7 years ago
omap24xx treewide: use only board_name function to get name 7 years ago
orion treewide: use only board_name function to get name 7 years ago
oxnas treewide: drop target board_name functions 7 years ago
pistachio kernel: update kernel 4.9 to 4.9.37 7 years ago
ppc40x treewide: drop target board_name functions 7 years ago
ppc44x ppc44x: mark as broken 7 years ago
ramips treewide: drop target board_name functions 7 years ago
rb532 treewide: use only board_name function to get name 7 years ago
sunxi treewide: drop target board_name functions 7 years ago
uml uml: Backport upstream fix to build against static libpthread 7 years ago
x86 x86: Fix xen serial console by removing conflicting PATA driver 7 years ago
xburst xburst: enable high-res timers, refresh kernel config 7 years ago
zynq treewide: use only board_name function to get name 7 years ago
Makefile