lkml.org 
[lkml]   [2010]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/8] hw-breakpoints: Tag ptrace breakpoint as exclude_kernel
    Date
    Tag ptrace breakpoints with the exclude_kernel attribute set. This
    will make it easier to set generic policies on breakpoints, when it
    comes to ensure nobody unpriviliged try to breakpoint on the kernel.

    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    Acked-by: Paul Mundt <lethal@linux-sh.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Cc: K. Prasad <prasad@linux.vnet.ibm.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    ---
    arch/sh/kernel/ptrace_32.c | 2 +-
    arch/x86/kernel/ptrace.c | 2 +-
    include/linux/hw_breakpoint.h | 6 ++++++
    3 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c
    index 7759a9a..d4104ce 100644
    --- a/arch/sh/kernel/ptrace_32.c
    +++ b/arch/sh/kernel/ptrace_32.c
    @@ -85,7 +85,7 @@ static int set_single_step(struct task_struct *tsk, unsigned long addr)

    bp = thread->ptrace_bps[0];
    if (!bp) {
    - hw_breakpoint_init(&attr);
    + ptrace_breakpoint_init(&attr);

    attr.bp_addr = addr;
    attr.bp_len = HW_BREAKPOINT_LEN_2;
    diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
    index 055be0a..70c4872 100644
    --- a/arch/x86/kernel/ptrace.c
    +++ b/arch/x86/kernel/ptrace.c
    @@ -688,7 +688,7 @@ static int ptrace_set_breakpoint_addr(struct task_struct *tsk, int nr,
    struct perf_event_attr attr;

    if (!t->ptrace_bps[nr]) {
    - hw_breakpoint_init(&attr);
    + ptrace_breakpoint_init(&attr);
    /*
    * Put stub len and type to register (reserve) an inactive but
    * correct bp
    diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h
    index c70d27a..a0aa5a9 100644
    --- a/include/linux/hw_breakpoint.h
    +++ b/include/linux/hw_breakpoint.h
    @@ -34,6 +34,12 @@ static inline void hw_breakpoint_init(struct perf_event_attr *attr)
    attr->sample_period = 1;
    }

    +static inline void ptrace_breakpoint_init(struct perf_event_attr *attr)
    +{
    + hw_breakpoint_init(attr);
    + attr->exclude_kernel = 1;
    +}
    +
    static inline unsigned long hw_breakpoint_addr(struct perf_event *bp)
    {
    return bp->attr.bp_addr;
    --
    1.6.2.3


    \
     
     \ /
      Last update: 2010-05-01 04:57    [W:0.040 / U:147.784 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site