From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755659AbbIALl2 (ORCPT ); Tue, 1 Sep 2015 07:41:28 -0400 Received: from casper.infradead.org ([85.118.1.10]:45673 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752611AbbIALl0 (ORCPT ); Tue, 1 Sep 2015 07:41:26 -0400 Date: Tue, 1 Sep 2015 13:41:20 +0200 From: Peter Zijlstra To: Frederic Weisbecker Cc: =?utf-8?B?5bmz5p2+6ZuF5bezIC8gSElSQU1BVFXvvIxNQVNBTUk=?= , Andy Lutomirski , "linux-kernel@vger.kernel.org" , Brian Gerst , Steven Rostedt , Borislav Petkov , Thomas Gleixner , Linus Torvalds , X86 ML Subject: Re: [PATCH 1/3] x86/perf/hw_breakpoint: Disallow kernel breakpoints unless kprobe-safe Message-ID: <20150901114120.GN18673@twins.programming.kicks-ass.net> References: <20150804155158.GB32738@lerouge> <50399556C9727B4D88A595C8584AAB375249C089@GSjpTKYDCembx32.service.hitachi.net> <20150901113608.GR19282@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150901113608.GR19282@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 01, 2015 at 01:36:08PM +0200, Peter Zijlstra wrote: > +static inline bool kprobe_blacklisted(unsigned long addr) > +{ > + return false; Ah, I think that wants to be true instead, to match the below comment. > +} > + > static inline int kprobes_built_in(void) > { > return 0; > diff --git a/kernel/events/hw_breakpoint.c b/kernel/events/hw_breakpoint.c > index 92ce5f4ccc26..7c08e6d1175c 100644 > --- a/kernel/events/hw_breakpoint.c > +++ b/kernel/events/hw_breakpoint.c > @@ -384,6 +384,14 @@ static int validate_hw_breakpoint(struct perf_event *bp) > */ > if (!capable(CAP_SYS_ADMIN)) > return -EPERM; > + > + /* > + * We don't allow kernel breakpoints in places that are not > + * acceptable for kprobes. On non-kprobes kernels, we don't > + * allow kernel breakpoints at all. > + */ > + if (kprobe_blacklisted(bp->attr.bp_addr)) > + return -EINVAL; > } > > return 0;