kprobe fault handling

Martin Hunt hunt@redhat.com
Tue Feb 7 17:50:00 GMT 2006


On Tue, 2006-02-07 at 09:31 -0800, Jim Keniston wrote:
[...]
> > > And that's it. kprobe_fault_handler returns 0.  No call to
> > > fixup_exceptions()!  So do_page_fault() will have to do the fixups, but
> > > first it will print nasty might_sleep warnings and maybe actually sleep!
> 
> You have the right idea of running fixup_exceptions() in the fault
> handler, to prevent do_page_fault() from attempting its demand-paging
> stuff.  I just think it's OK to have the user's fault handler, rather
> than kprobe_fault_handler, run fixup_exceptions.

I think if the user's fault handler does not handle the page fault,
kprobes should attempt to do so. Returning without handling the page
fault could leave the system in a bad state. So your proposal would mean
it is necessary to specify a fault handler for any kprobe that might
attempt user-space access or otherwise trigger a page fault, otherwise
the system could crash.

Any more importantly, fixup_exception() and all the exception table code
are currently not exported so cannot be called from a module.

Martin




More information about the Systemtap mailing list