linux_dsm_epyc7002/drivers/net/ethernet/sfc
Bert Kenward 1c56c0994a sfc: avoid hang from nested use of the filter_sem
In some situations we may end up calling down_read while already
holding the semaphore for write, thus hanging. This has been seen
when setting the MAC address for the interface. The hung task log
in this situation includes this stack:
  down_read
  efx_ef10_filter_insert
  efx_ef10_filter_insert_addr_list
  efx_ef10_filter_vlan_sync_rx_mode
  efx_ef10_filter_add_vlan
  efx_ef10_filter_table_probe
  efx_ef10_set_mac_address
  efx_set_mac_address
  dev_set_mac_address

In addition, lockdep rightly points out that nested calling of
down_read is incorrect.

Fixes: c2bebe37c6 ("sfc: give ef10 its own rwsem in the filter table instead of filter_lock")
Tested-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Bert Kenward <bkenward@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-07-12 14:52:04 -07:00
..
falcon treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
bitfield.h
ef10_regs.h sfc: update EF10 register definitions 2017-12-18 13:07:50 -05:00
ef10_sriov.c sfc: remove duplicate up_write on VF filter_sem 2017-06-20 15:40:00 -04:00
ef10_sriov.h
ef10.c sfc: avoid hang from nested use of the filter_sem 2018-07-12 14:52:04 -07:00
efx.c sfc: make function efx_rps_hash_bucket static 2018-06-24 23:08:25 +09:00
efx.h sfc: ARFS filter IDs 2018-04-24 13:48:22 -04:00
enum.h
ethtool.c sfc: fix flow type handling for RSS filters 2018-03-27 13:33:20 -04:00
farch_regs.h
farch.c sfc: correctly initialise filter rwsem for farch 2018-06-30 21:13:37 +09:00
filter.h sfc: support RSS spreading of ethtool ntuple filters 2018-03-08 21:54:52 -05:00
io.h sfc: support VI strides other than 8k 2017-12-18 13:07:49 -05:00
Kconfig
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcdi_mon.c ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
mcdi_pcol.h sfc: update MCDI protocol headers 2018-03-14 13:12:14 -04:00
mcdi_port.c sfc: support FEC configuration through ethtool 2018-03-14 13:12:15 -04:00
mcdi.c jiffies: Introduce USER_TICK_USEC and redefine TICK_USEC 2018-04-06 09:28:50 +02:00
mcdi.h sfc: support VI strides other than 8k 2017-12-18 13:07:49 -05:00
mtd.c mtd: Stop updating erase_info->state and calling mtd_erase_callback() 2018-03-21 09:50:56 +01:00
net_driver.h sfc: ARFS filter IDs 2018-04-24 13:48:22 -04:00
nic.c
nic.h sfc: remove ctpio_dmabuf_start from stats 2018-04-04 12:07:22 -04:00
ptp.c sfc: mark some unexported symbols as static 2018-01-28 21:59:18 -05:00
rx.c sfc: Use filter index rather than ID for rps_flow_id table 2018-04-27 20:21:07 -04:00
selftest.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
selftest.h
siena_sriov.c
siena_sriov.h
siena.c sfc: replace asynchronous filter operations 2018-03-27 13:33:19 -04:00
sriov.c
sriov.h
tx_tso.c
tx.c sfc: stop the TX queue before pushing new buffers 2018-05-25 14:49:37 -04:00
tx.h
vfdi.h
workarounds.h