NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/58666: panic: lock error: Reader / writer lock: rw_vector_enter,357: locking against myself



The following reply was made to PR kern/58666; it has been noted by GNATS.

From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: Havard Eidnes <he%NetBSD.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, netbsd-bugs%NetBSD.org@localhost,
	Chuck Silvers <chs%NetBSD.org@localhost>
Subject: Re: kern/58666: panic: lock error: Reader / writer lock: rw_vector_enter,357: locking against myself
Date: Sun, 8 Sep 2024 11:14:31 +0000

 This is a multi-part message in MIME format.
 --=_IfcsmmonH+FC4mEL4QHaEfWN6ZIGlhUw
 
 Can you please try the attached patch and see if you can still
 reproduce the issue?
 
 I don't know why this might have changed from 9.3 to 10.0_STABLE, but
 the bug the patch fixes may explain your symptom.
 
 --=_IfcsmmonH+FC4mEL4QHaEfWN6ZIGlhUw
 Content-Type: text/plain; charset="ISO-8859-1"; name="pr58666-i386pmapcrash"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment; filename="pr58666-i386pmapcrash.patch"
 
 # HG changeset patch
 # User Taylor R Campbell <riastradh%NetBSD.org@localhost>
 # Date 1725793843 0
 #      Sun Sep 08 11:10:43 2024 +0000
 # Branch trunk
 # Node ID 136d545c35b390c461167f41873831ea1109c668
 # Parent  38029f50cf37ce95668214c8d1a5a30aa712814a
 # EXP-Topic riastradh-pr58666-i386pmapcrash
 x86/pmap: Use UVM_KMF_WAITVA to ensure pmap_pdp_alloc never fails.
 
 This is used as the backing page allocator for pmap_pdp_pool, and
 pmap_ctor assumes that PR_WAITOK allocations from it don't fail and
 unconditionally writes to the resulting kva, which if null leads
 nowhere good.
 
 It is unclear to me why uvm_km_alloc can accept any combination of
 the options UVM_KMF_NOWAIT and UVM_KMF_WAITVA.  It seems to me that
 at least one should be required (and they should be exclusive), and
 any other use should trip an assertion.
 
 PR kern/58666: panic: lock error: Reader / writer lock:
 rw_vector_enter,357: locking against myself
 
 diff -r 38029f50cf37 -r 136d545c35b3 sys/arch/x86/x86/pmap.c
 --- a/sys/arch/x86/x86/pmap.c	Sat Aug 31 15:49:02 2024 +0000
 +++ b/sys/arch/x86/x86/pmap.c	Sun Sep 08 11:10:43 2024 +0000
 @@ -2844,7 +2844,8 @@ pmap_pdp_alloc(struct pool *pp, int flag
  {
  	return (void *)uvm_km_alloc(kernel_map,
  	    PAGE_SIZE * PDP_SIZE, PAGE_SIZE * PDP_SIZE,
 -	    ((flags & PR_WAITOK) ? 0 : UVM_KMF_NOWAIT | UVM_KMF_TRYLOCK) |
 +	    ((flags & PR_WAITOK) ? UVM_KMF_WAITVA
 +		: UVM_KMF_NOWAIT | UVM_KMF_TRYLOCK) |
  	    UVM_KMF_WIRED);
  }
 =20
 
 --=_IfcsmmonH+FC4mEL4QHaEfWN6ZIGlhUw--
 


Home | Main Index | Thread Index | Old Index