Fix the deadlock between uvn_io() and uvn_flush() by restarting the fault.
authormpi <mpi@openbsd.org>
Tue, 2 Mar 2021 10:12:37 +0000 (10:12 +0000)
committermpi <mpi@openbsd.org>
Tue, 2 Mar 2021 10:12:37 +0000 (10:12 +0000)
commit3426345d211be9d90bb8991ff6daa953ea3b752a
treebaca9b53514c9f61821629851c30e32e87b858e3
parent4deeff89dc578f0b4221cd4a79a8e3693afe5c5b
Fix the deadlock between uvn_io() and uvn_flush() by restarting the fault.

Do not allow a faulting thread to sleep on a contended vnode lock to prevent
lock ordering issues with upcoming per-uobj lock.

ok anton@

Reported-by: syzbot+e63407b35dff08dbee02@syzkaller.appspotmail.com
sys/uvm/uvm_pager.h
sys/uvm/uvm_vnode.c