Files
linux/drivers/net
Jia-Ju Bai d3e419fb1a net: cadence: Fix a sleep-in-atomic-context bug in macb_halt_tx()
[ Upstream commit 16fe10cf92 ]

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>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-10-10 08:53:19 +02:00
..
2016-06-15 22:06:06 -07:00
2015-10-21 19:36:10 -07:00
2017-12-09 22:01:54 +01:00
2016-05-09 00:00:28 -04:00
2016-04-26 15:53:05 -04:00
2018-03-22 09:17:57 +01:00