hw-breakpoints: Tag ptrace breakpoint as exclude_kernel
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>
This commit is contained in:
@@ -85,7 +85,7 @@ static int set_single_step(struct task_struct *tsk, unsigned long addr)
|
|||||||
|
|
||||||
bp = thread->ptrace_bps[0];
|
bp = thread->ptrace_bps[0];
|
||||||
if (!bp) {
|
if (!bp) {
|
||||||
hw_breakpoint_init(&attr);
|
ptrace_breakpoint_init(&attr);
|
||||||
|
|
||||||
attr.bp_addr = addr;
|
attr.bp_addr = addr;
|
||||||
attr.bp_len = HW_BREAKPOINT_LEN_2;
|
attr.bp_len = HW_BREAKPOINT_LEN_2;
|
||||||
|
@@ -688,7 +688,7 @@ static int ptrace_set_breakpoint_addr(struct task_struct *tsk, int nr,
|
|||||||
struct perf_event_attr attr;
|
struct perf_event_attr attr;
|
||||||
|
|
||||||
if (!t->ptrace_bps[nr]) {
|
if (!t->ptrace_bps[nr]) {
|
||||||
hw_breakpoint_init(&attr);
|
ptrace_breakpoint_init(&attr);
|
||||||
/*
|
/*
|
||||||
* Put stub len and type to register (reserve) an inactive but
|
* Put stub len and type to register (reserve) an inactive but
|
||||||
* correct bp
|
* correct bp
|
||||||
|
@@ -34,6 +34,12 @@ static inline void hw_breakpoint_init(struct perf_event_attr *attr)
|
|||||||
attr->sample_period = 1;
|
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)
|
static inline unsigned long hw_breakpoint_addr(struct perf_event *bp)
|
||||||
{
|
{
|
||||||
return bp->attr.bp_addr;
|
return bp->attr.bp_addr;
|
||||||
|
Reference in New Issue
Block a user