From: kn Date: Fri, 11 Feb 2022 12:06:48 +0000 (+0000) Subject: Backout previous "Unwire with map lock held" (commitid: eQBvWUwShD91dN9Z) X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=2e08805ee98ba8b859cb3470d90ae96370d0c081;p=openbsd Backout previous "Unwire with map lock held" (commitid: eQBvWUwShD91dN9Z) WITNESS builds broke^W^Wkernels panic on boot as reported by anton and bluhm. Booting bsd.mp in single-user mode inside VMM shows: root on sd0a (5f9e458ed30b39ab.a) swap on sd0b dump on sd0b Enter pathname of shell or RETURN for sh: witness: lock order reversal: 1st 0xfffffd801f8ce468 vmmaplk (&map->lock) 2nd 0xfffffd801b8162c0 inode (&ip->i_lock) lock order "&ip->i_lock"(rrwlock) -> "&map->lock"(rwlock) first seen at: #0 rw_enter_read+0x38 #1 uvmfault_lookup+0x8a #2 uvm_fault_check+0x32 #3 uvm_fault+0xfb #4 kpageflttrap+0x12c #5 kerntrap+0x91 #6 alltraps_kern_meltdown+0x7b #7 copyout+0x53 #8 ffs_read+0x1f6 #9 VOP_READ+0x41 #10 vn_rdwr+0xa1 #11 vmcmd_map_readvn+0xa0 #12 exec_process_vmcmds+0x88 #13 sys_execve+0x732 #14 start_init+0x26f #15 proc_trampoline+0x1c lock order data w1 -> w2 missing # exit kernel: protection fault trap, code=0 Stopped at witness_checkorder+0x312: movl 0x10(%r14),%ecx gkoehler reported faults on poisened addresses on macppc dual G5. --- diff --git a/sys/uvm/uvm_map.c b/sys/uvm/uvm_map.c index ff4689214d5..9263c4d8ab5 100644 --- a/sys/uvm/uvm_map.c +++ b/sys/uvm/uvm_map.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_map.c,v 1.285 2022/02/11 09:25:04 kn Exp $ */ +/* $OpenBSD: uvm_map.c,v 1.286 2022/02/11 12:06:48 kn Exp $ */ /* $NetBSD: uvm_map.c,v 1.86 2000/11/27 08:40:03 chs Exp $ */ /* @@ -2734,7 +2734,6 @@ uvm_map_teardown(struct vm_map *map) KERNEL_ASSERT_UNLOCKED(); KASSERT((map->flags & VM_MAP_INTRSAFE) == 0); - vm_map_lock(map); /* Remove address selectors. */ uvm_addr_destroy(map->uaddr_exe);