linux_dsm_epyc7002/drivers/net/ethernet/hisilicon
Salil Mehta bf5a6b4c47 net: hns: Fix the stray netpoll locks causing deadlock in NAPI path
This patch fixes the problem of the spin locks, originally
meant for the netpoll path of hns driver, causing deadlock in
the normal NAPI poll path. The issue happened due to the presence
of the stray leftover spin lock code related to the netpoll,
whose support was earlier removed from the HNS[1], got activated
due to enabling of NET_POLL_CONTROLLER switch.

Earlier background:
The netpoll handling code originally had this bug(as identified
by Marc Zyngier[2]) of wrong spin lock API being used which did
not disable the interrupts and hence could cause locking issues.
i.e. if the lock were first acquired in context to thread like
'ip' util and this lock if ever got later acquired again in
context to the interrupt context like TX/RX (Interrupts could
always pre-empt the lock holding task and acquire the lock again)
and hence could cause deadlock.

Proposed Solution:
1. If the netpoll was enabled in the HNS driver, which is not
   right now, we could have simply used spin_[un]lock_irqsave()
2. But as netpoll is disabled, therefore, it is best to get rid
   of the existing locks and stray code for now. This should
   solve the problem reported by Marc.

[1] https://git.kernel.org/torvalds/c/4bd2c03be7
[2] https://patchwork.ozlabs.org/patch/1189139/

Fixes: 4bd2c03be7 ("net: hns: remove ndo_poll_controller")
Cc: lipeng <lipeng321@huawei.com>
Cc: Yisen Zhuang <yisen.zhuang@huawei.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: David S. Miller <davem@davemloft.net>
Reported-by: Marc Zyngier <maz@kernel.org>
Acked-by: Marc Zyngier <maz@kernel.org>
Tested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-11-07 16:12:15 -08:00
..
hns net: hns: Fix the stray netpoll locks causing deadlock in NAPI path 2019-11-07 16:12:15 -08:00
hns3 net: hns3: add compatible handling for command HCLGE_OPC_PF_RST_DONE 2019-11-06 21:46:56 -08:00
hip04_eth.c net: hisilicon: Fix ping latency when deal with high throughput 2019-10-29 16:34:06 -07:00
hisi_femac.c net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
hix5hd2_gmac.c net: hisilicon: Fix signedness bug in hix5hd2_dev_probe() 2019-09-27 10:01:36 +02:00
hns_mdio.c net: hisilicon: Fix usage of uninitialized variable in function mdio_sc_cfg_reg_write() 2019-10-02 14:20:22 -07:00
Kconfig net: hisilicon: Add support for HI13X1 to hip04_eth 2019-07-09 14:29:26 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00