]> git.baikalelectronics.ru Git - kernel.git/commit
net: fec: fix kernel oops when plug/unplug cable many times
authorFrank Li <Frank.Li@freescale.com>
Tue, 7 May 2013 14:08:44 +0000 (14:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 May 2013 20:13:30 +0000 (13:13 -0700)
commit56eda0ecca2749254460ce57f3801a5fd88545b1
tree31bb2d5574adc10d342a01b2081c9907e917c554
parenteb321da1613f1fa00764be8c3ef2d94efb265fdf
net: fec: fix kernel oops when plug/unplug cable many times

reproduce steps
 1. flood ping from other machine
  ping -f -s 41000 IP
 2. run below script
    while [ 1 ]; do ethtool -s eth0 autoneg off;
    sleep 3;ethtool -s eth0 autoneg on; sleep 4; done;

You can see oops in one hour.

The reason is fec_restart clear BD but NAPI may use it.
The solution is disable NAPI and stop xmit when reset BD.
disable NAPI may sleep, so fec_restart can't be call in
atomic context.

Signed-off-by: Frank Li <Frank.Li@freescale.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fec.h
drivers/net/ethernet/freescale/fec_main.c