Hello,

Thanks for your report.

On 24/01/25(Fri) 10:37, K R wrote:
> >Synopsis:      kernel panic: "anon->an_lock == NULL || 
> >rw_write_held(anon->an_lock)" failed
> >Category:      kernel amd64
> >Environment:
>         System      : OpenBSD 7.6
>         Details     : OpenBSD 7.6-current (GENERIC.MP) #515: Wed Jan
> 22 02:25:16 MST 2025
> 
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
>         Architecture: OpenBSD.amd64
>         Machine     : amd64
> >Description:
> 
> The machine is a Dell PowerEdge R450 with 128GB of RAM.  It panics
> under heavy RAM usage.  With 7.6-release + syspatches, it would just
> freeze, not panic.  Under 7.6-current now it panics with the assertion
> shown above.  Panic screen attached below.
> 
> Please let me know if you need more specific commands at the ddb prompt.

I don't need more informations.  Please find a fix below.  The panic is
due to an incorrect unlock in error path.  Can you confirm the fix works
for you?

Thanks,
Martin

Index: uvm/uvm_pdaemon.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_pdaemon.c,v
diff -u -p -r1.133 uvm_pdaemon.c
--- uvm/uvm_pdaemon.c   27 Dec 2024 12:04:40 -0000      1.133
+++ uvm/uvm_pdaemon.c   24 Jan 2025 16:06:19 -0000
@@ -848,7 +848,6 @@ uvmpd_scan_inactive(struct uvm_pmalloc *
                                anon->an_page = NULL;
                                p->uanon = NULL;
 
-                               rw_exit(anon->an_lock);
                                uvm_anfree(anon);       /* kills anon */
                                pmap_page_protect(p, PROT_NONE);
                                anon = NULL;


Reply via email to