2007-05-23 15:33:18

by William Cohen

[permalink] [raw]
Subject: CONFIG_DEBUG_RODATA prevents kprobes from working on 2.6.22-rc2

The recent changes in the 2.6.22-rc2 kernel to the write protection of read only
data enable by CONFIG_DEBUG_RODATA prevents kprobes from working. At least on
the on i386 and x86_64 machine the mark_rodata_ro() function marks memory
starting from _text as read only. Thus, when kprobes attempts to write a break
point into a location in the kernel it faults.

There is a description of the problem at:

http://sources.redhat.com/bugzilla/show_bug.cgi?id=4531

Shouldn't mark_rodata_ro be less agressive when CONFIG_KPROBES is enabled? Or
should kprobes temporarily change the page to be writeable, set the break point,
and then return the page to read only?

-Will


2007-05-25 11:22:28

by Andi Kleen

[permalink] [raw]
Subject: Re: CONFIG_DEBUG_RODATA prevents kprobes from working on 2.6.22-rc2

William Cohen <[email protected]> writes:
>
> Shouldn't mark_rodata_ro be less agressive when CONFIG_KPROBES is
> enabled? Or should kprobes temporarily change the page to be
> writeable, set the break point, and then return the page to read only?

The later.

-Andi