Sebastian Andrzej Siewior fd888e85fe net: Write lock dev_base_lock without disabling bottom halves.
The writer acquires dev_base_lock with disabled bottom halves.
The reader can acquire dev_base_lock without disabling bottom halves
because there is no writer in softirq context.

On PREEMPT_RT the softirqs are preemptible and local_bh_disable() acts
as a lock to ensure that resources, that are protected by disabling
bottom halves, remain protected.
This leads to a circular locking dependency if the lock acquired with
disabled bottom halves (as in write_lock_bh()) and somewhere else with
enabled bottom halves (as by read_lock() in netstat_show()) followed by
disabling bottom halves (cxgb_get_stats() -> t4_wr_mbox_meat_timeout()
-> spin_lock_bh()). This is the reverse locking order.

All read_lock() invocation are from sysfs callback which are not invoked
from softirq context. Therefore there is no need to disable bottom
halves while acquiring a write lock.

Acquire the write lock of dev_base_lock without disabling bottom halves.

Reported-by: Pei Zhang <pezhang@redhat.com>
Reported-by: Luis Claudio R. Goncalves <lgoncalv@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-11-29 12:12:36 +00:00
..
2021-11-04 21:04:25 +09:00
2021-10-24 13:59:45 +01:00
2021-10-13 09:40:45 -07:00
2021-11-23 20:16:22 -08:00
2021-06-29 11:28:21 -07:00
2021-10-13 09:40:46 -07:00
2021-10-13 09:40:45 -07:00
2021-11-22 14:28:37 +00:00
2021-10-13 09:40:45 -07:00
2021-11-25 19:28:16 -08:00
2021-11-02 06:20:58 -07:00
2021-07-29 15:06:49 +01:00
2021-08-31 16:43:06 -07:00