On Thu, 19 Jan 2023, Mel Gorman wrote:
The race could be closed by moving wait_lock acquisition before the atomic_sub in rwbase_write_lock() but it expands the scope of the wait_lock and I'm not sure that's necessary for either correctness or preventing writer starvation. It's a more straight-forward fix but expanding the scope of a lock unnecessarily has been unpopular in the past.
Curiously, this is the documented behavior: * down_write/write_lock() * 1) Lock rtmutex * 2) Remove the reader BIAS to force readers into the slow path