Assert vm map locks
authorkn <kn@openbsd.org>
Thu, 10 Feb 2022 10:15:35 +0000 (10:15 +0000)
committerkn <kn@openbsd.org>
Thu, 10 Feb 2022 10:15:35 +0000 (10:15 +0000)
commit3ca4486c5e48ba18e59dae0787ab04202c0e20c4
treee34147d8cedd702f5be351488f5604c13ca311c1
parent7546f550fcc8ab50c7570383b8fd2a7193972e13
Assert vm map locks

Introduce vm_map_assert_{wrlock,rdlock,anylock,unlocked}() in rwlock(9)
fashion and back up function comments about locking assumptions with proper
assertions.

Also add new comments/assertions based on code analysis and sync with
NetBSD as much as possible.

vm_map_lock() and vm_map_lock_read() are used for exclusive and shared
access respectively;  currently no code path is purely protected by
vm_map_lock_read() alone, i.e. functions called with a read lock held by the
callee are also called with a write lock elsewhere.

Thus only vm_map_assert_{wrlock,anylock}() are used as of now.

This should help with unlocking UVM related syscalls

Tested as part of a larger diff through
- amd64 package bulk build by naddy
- amd64, arm64, powerpc64 base builds and regress by bluhm
- amd64 and sparc64 base builds and regress by me

Input mpi
Feedback OK kettenis
sys/uvm/uvm_fault.c
sys/uvm/uvm_map.c
sys/uvm/uvm_map.h