NetBSD-Bugs archive

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

Re: port-alpha/56201 (Apparent NULL pointer deref in pmap_l3pt_delref() via pmap_page_protect() under memory pressure)



This appears to be a use-after-free… if I poison pmap->pm_lev1map with 0xdeadbeef in pmap_destroy(), I see:

[  17.2311772] CPU 0: fatal kernel trap:

[  17.2311772] CPU 0    trap entry = 0x4 (unaligned access fault)
[  17.2311772] CPU 0    a0         = 0xdeadcee7
[  17.2311772] CPU 0    a1         = 0x29
[  17.2311772] CPU 0    a2         = 0x1
[  17.2311772] CPU 0    pc         = 0xfffffc0000a4cea8
[  17.2311772] CPU 0    ra         = 0xfffffc0000a4d2a4
[  17.2311772] CPU 0    pv         = 0xfffffc0000a4ce50
[  17.2311772] CPU 0    curlwp     = 0xfffffc0001dece00
[  17.2311772] CPU 0        pid = 0, comm = system

[  17.2311772] panic: trap
[  17.2311772] cpu0: Begin traceback...
[  17.2311772] alpha trace requires known PC =eject=
[  17.2311772] cpu0: End traceback...
Stopped in pid 0.97 (system) at netbsd:cpu_Debugger+0x4:        ret     zero,(ra
)
db{0}> trace
cpu_Debugger() at netbsd:cpu_Debugger+0x4
db_panic() at netbsd:db_panic+0xc8
vpanic() at netbsd:vpanic+0x108
panic() at netbsd:panic+0x58
trap() at netbsd:trap+0xa58
XentUna() at netbsd:XentUna+0x20
--- unaligned access fault (from ipl 0) ---
pmap_l3pt_delref() at netbsd:pmap_l3pt_delref+0x58
pmap_remove_mapping() at netbsd:pmap_remove_mapping+0xa4
pmap_page_protect() at netbsd:pmap_page_protect+0x138
uvm_pageout() at netbsd:uvm_pageout+0x330
--- kernel thread backstop ---
db{0}> 


So it would appear there’s a PV entry for the page pointing to a pmap that’s been torn down.

-- thorpej



Home | Main Index | Thread Index | Old Index