linux/drivers/net/ethernet/cadence
Jia-Ju Bai 16fe10cf92 net: cadence: Fix a sleep-in-atomic-context bug in macb_halt_tx()
The kernel module may sleep with holding a spinlock.

The function call paths (from bottom to top) in Linux-4.16 are:

[FUNC] usleep_range
drivers/net/ethernet/cadence/macb_main.c, 648:
	usleep_range in macb_halt_tx
drivers/net/ethernet/cadence/macb_main.c, 730:
	macb_halt_tx in macb_tx_error_task
drivers/net/ethernet/cadence/macb_main.c, 721:
	_raw_spin_lock_irqsave in macb_tx_error_task

To fix this bug, usleep_range() is replaced with udelay().

This bug is found by my static analysis tool DSAC.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-09-02 16:05:25 -07:00
..
Kconfig net: ethernet: Add missing VENDOR to Cadence and Packet Engines symbols 2018-07-05 20:05:54 +09:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
macb.h net: macb: Allocate valid memory for TX and RX BD prefetch 2018-07-07 20:54:25 +09:00
macb_main.c net: cadence: Fix a sleep-in-atomic-context bug in macb_halt_tx() 2018-09-02 16:05:25 -07:00
macb_pci.c net: cadence: macb: constify pci_device_id. 2017-07-17 13:37:15 -07:00
macb_ptp.c net: macb: Mark expected switch fall-through 2018-08-07 17:54:19 -07:00