From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752645AbeCLK1o (ORCPT ); Mon, 12 Mar 2018 06:27:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:53918 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751303AbeCLK1n (ORCPT ); Mon, 12 Mar 2018 06:27:43 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5B930208FE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mhiramat@kernel.org Date: Mon, 12 Mar 2018 19:27:38 +0900 From: Masami Hiramatsu To: Masami Hiramatsu Cc: Alexei Starovoitov , Josef Bacik , rostedt@goodmis.org, mingo@redhat.com, davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, ast@kernel.org, kernel-team@fb.com, daniel@iogearbox.net, linux-btrfs@vger.kernel.org, darrick.wong@oracle.com, Josef Bacik , Akinobu Mita Subject: Re: [BUGFIX PATCH bpf-next] error-injection: Fix to prohibit jump optimization Message-Id: <20180312192738.77061ec53f9437d960b437d9@kernel.org> In-Reply-To: <152084884886.1536.4464134247603910765.stgit@devbox> References: <152084884886.1536.4464134247603910765.stgit@devbox> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 12 Mar 2018 19:00:49 +0900 Masami Hiramatsu wrote: > Since the kprobe which was optimized by jump can not change > the execution path, the kprobe for error-injection must not > be optimized. To prohibit it, set a dummy post-handler as > officially stated in Documentation/kprobes.txt. Note that trace-probe based BPF is not affected, because it ensures the trace-probe is based on ftrace, which is not jump optimized. Thanks, > > Fixes: 4b1a29a7f542 ("error-injection: Support fault injection framework") > Signed-off-by: Masami Hiramatsu > --- > kernel/fail_function.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/kernel/fail_function.c b/kernel/fail_function.c > index 21b0122cb39c..1d5632d8bbcc 100644 > --- a/kernel/fail_function.c > +++ b/kernel/fail_function.c > @@ -14,6 +14,15 @@ > > static int fei_kprobe_handler(struct kprobe *kp, struct pt_regs *regs); > > +static void fei_post_handler(struct kprobe *kp, struct pt_regs *regs, > + unsigned long flags) > +{ > + /* > + * A dummy post handler is required to prohibit optimizing, because > + * jump optimization does not support execution path overriding. > + */ > +} > + > struct fei_attr { > struct list_head list; > struct kprobe kp; > @@ -56,6 +65,7 @@ static struct fei_attr *fei_attr_new(const char *sym, unsigned long addr) > return NULL; > } > attr->kp.pre_handler = fei_kprobe_handler; > + attr->kp.post_handler = fei_post_handler; > attr->retval = adjust_error_retval(addr, 0); > INIT_LIST_HEAD(&attr->list); > } > -- Masami Hiramatsu