NetBSD-Bugs archive

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

port-amd64/57582: ddb `write' command can't write to module text, only to main kernel text



>Number:         57582
>Category:       port-amd64
>Synopsis:       ddb `write' command can't write to module text, only to main kernel text
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-amd64-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Aug 13 16:30:01 +0000 2023
>Originator:     Taylor R Campbell
>Release:        current, 10, 9, 8, ...
>Organization:
The NetBSD fatal page fault in supervisor mode
>Environment:
>Description:
For pages that are in the kernel text or kernel rodata segments, x86 db_write_bytes temporarily changes the kernel pmap to allow writes to the affected page while it works.

However, it doesn't do this for modules, only the main kernel.
>How-To-Repeat:
db{0}> w/l kmem_cache_reap_now+9 fc7b1245
solaris:kmem_cache_reap_now+0x9         fc7b1230 = fc7b1245
[ 458962.7683486] fatal page fault in supervisor mode
[ 458962.7683486] trap type 6 code 0x3 rip 0xffffffff8023d829 cs 0x8 rflags 0x10246 cr2 0xffffffff841e0fc6 ilevel 0x8 rsp 0xffffd3849412a8a0
[ 458962.7683486] curlwp 0xfffff3f4e02ee040 pid 0.2 lowest kstack 0xffffd384941282c0
kernel: page fault trap, code=0
Faulted in DDB; continuing...

>Fix:
Teach db_write_bytes to detect module text/rodata segments too.



Home | Main Index | Thread Index | Old Index