lkml.org 
[lkml]   [2009]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/6] ftrace, x86: make kernel text writable only for conversions
    * Steven Rostedt (rostedt@goodmis.org) wrote:
    >
    >
    >
    > On Sun, 22 Feb 2009, Andi Kleen wrote:
    >
    > > Steven Rostedt <rostedt@goodmis.org> writes:
    > >
    > > > From: Steven Rostedt <srostedt@redhat.com>
    > > >
    > > > Impact: keep kernel text read only
    > > >
    > > > Because dynamic ftrace converts the calls to mcount into and out of
    > > > nops at run time, we needed to always keep the kernel text writable.
    > > >
    > > > But this defeats the point of CONFIG_DEBUG_RODATA. This patch converts
    > > > the kernel code to writable before ftrace modifies the text, and converts
    > > > it back to read only afterward.
    > > >
    > > > The conversion is done via stop_machine and no IPIs may be executed
    > > > at that time. The kernel text is set to write just before calling
    > > > stop_machine and set to read only again right afterward.
    > >
    > > The very old text poke code I had for this just used a dynamic
    > > mapping elsewhere instead to modify the code. That's much less
    > > intrusive than changing the complete mappings. Any reason you can't use
    > > that too?
    > >
    >
    > We are changing over 19000 locations in the kernel. This touches almost
    > all kernel text pages anyway. You want to map a page in and out for over
    > 19000 locations?
    >
    > -- Steve
    >

    Hi Steve,

    Can you provide numbers to indicate why it's required to be so intrusive
    in the kernel mappings while doing these modifications ? I think opening
    such time window where standard code mapping is writeable globally in
    config RO_DATA kernels could open the door to unexpected side-effects,
    so ideally going through the "backdoor" page mapped by text_poke seems
    safer. Given similar performance, I would tend to use a text_poke-like
    approach.

    Mathieu

    --
    Mathieu Desnoyers
    OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68


    \
     
     \ /
      Last update: 2009-02-23 03:35    [W:0.023 / U:31.032 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site