linux/drivers/net/ethernet/sfc
Bert Kenward 46d054f8f5 sfc: clear napi_hash state when copying channels
efx_copy_channel() doesn't correctly clear the napi_hash related state.
This means that when napi_hash_add is called for that channel nothing is
done, and we are left with a copy of the napi_hash_node from the old
channel. When we later call napi_hash_del() on this channel we have a
stale napi_hash_node.

Corruption is only seen when there are multiple entries in one of the
napi_hash lists. This is made more likely by having a very large number
of channels. Testing was carried out with 512 channels - 32 channels on
each of 16 ports.

This failure typically appears as protection faults within napi_by_id()
or napi_hash_add(). efx_copy_channel() is only used when tx or rx ring
sizes are changed (ethtool -G).

Fixes: 36763266bb ("sfc: Add support for busy polling")
Signed-off-by: Bert Kenward <bkenward@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-13 13:41:42 -05:00
..
bitfield.h
ef10_regs.h
ef10_sriov.c sfc: Fix VLAN filtering feature if vPort has VLAN_RESTRICT flag 2016-06-15 22:26:27 -07:00
ef10_sriov.h sfc: Fix VLAN filtering feature if vPort has VLAN_RESTRICT flag 2016-06-15 22:26:27 -07:00
ef10.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-08-30 00:54:02 -04:00
efx.c sfc: clear napi_hash state when copying channels 2016-11-13 13:41:42 -05:00
efx.h sfc: set interrupt moderation via MCDI 2016-08-12 20:42:20 -07:00
enum.h
ethtool.c
falcon_boards.c sfc: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:59 -07:00
falcon.c sfc: get timer configuration from adapter 2016-08-12 20:42:20 -07:00
farch_regs.h
farch.c sfc: work around TRIGGER_INTERRUPT command not working on SFC9140 2016-08-26 21:43:52 -07:00
filter.h
io.h
Kconfig
Makefile
mcdi_mon.c
mcdi_pcol.h sfc: update MCDI protocol headers 2016-08-12 20:42:19 -07:00
mcdi_port.c sfc: report supported link speeds on SFP connections 2016-06-08 11:18:45 -07:00
mcdi.c sfc: check async completer is !NULL before calling 2016-09-23 07:18:35 -04:00
mcdi.h
mdio_10g.c
mdio_10g.h
mtd.c
net_driver.h sfc: check MTU against minimum threshold 2016-09-06 16:54:18 -07:00
nic.c sfc: work around TRIGGER_INTERRUPT command not working on SFC9140 2016-08-26 21:43:52 -07:00
nic.h sfc: work around TRIGGER_INTERRUPT command not working on SFC9140 2016-08-26 21:43:52 -07:00
phy.h
ptp.c ptp_clock: future-proofing drivers against PTP subsystem becoming optional 2016-09-22 02:18:33 -04:00
qt202x_phy.c
rx.c sfc: Track RPS flow IDs per channel instead of per function 2016-05-31 20:30:25 -07:00
selftest.c sfc: work around TRIGGER_INTERRUPT command not working on SFC9140 2016-08-26 21:43:52 -07:00
selftest.h sfc: work around TRIGGER_INTERRUPT command not working on SFC9140 2016-08-26 21:43:52 -07:00
siena_sriov.c
siena_sriov.h
siena.c sfc: get timer configuration from adapter 2016-08-12 20:42:20 -07:00
sriov.c net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
sriov.h net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
tenxpress.c
tx.c
txc43128_phy.c
vfdi.h
workarounds.h sfc: set interrupt moderation via MCDI 2016-08-12 20:42:20 -07:00