Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754475AbbBZQNI (ORCPT ); Thu, 26 Feb 2015 11:13:08 -0500 Received: from cantor2.suse.de ([195.135.220.15]:58698 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753685AbbBZQNG (ORCPT ); Thu, 26 Feb 2015 11:13:06 -0500 From: Petr Mladek To: Masami Hiramatsu , "David S. Miller" , Anil S Keshavamurthy , Ananth N Mavinakayanahalli , Frederic Weisbecker Cc: Ingo Molnar , Steven Rostedt , Jiri Kosina , linux-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH 0/7] kprobe: Handle error when Kprobe ftrace arming fails Date: Thu, 26 Feb 2015 17:13:45 +0100 Message-Id: <1424967232-2923-1-git-send-email-pmladek@suse.cz> X-Mailer: git-send-email 1.8.5.6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1883 Lines: 48 arm_kprobe_ftrace() could fail, especially after introducing ftrace IPMODIFY flag and LifePatching. This patch set adds the error handling and also some related fixes. 1st patch includes the most important change. It helps to keep Kprobes in a sane state. 2nd and 3rd patch allows to propagate the error where needed. The other patches fix problems with the global kprobes_all_disarmed flag. They were there even before but they become more visible and critical after the arming errors became propagated. The first patch looks rather safe and might be suitable even for 4.0. However, I would feel more comfortable if the other patches get some testing in linux-next. I did quite some testing and did my best. But I started with the three patches and was surprised by the effect of the propagated errors. They triggered that BUG_ON() in __unregister_kprobe_top() are required the other patches to get it working. I wonder if there is any other scenario that I have missed. Of course, I also wait for feedback how to make things better. Petr Mladek (7): kprobes: Disable Kprobe when ftrace arming fails kprobes: Propagate error from arm_kprobe_ftrace() kprobes: Propagate error from disarm_kprobe_ftrace() kprobes: Keep consistent state of kprobes_all_disarmed kprobes: Do not try to disarm already disarmed Kprobe kprobes: Check kprobes_all_disarmed in kprobe_disarmed() kprobes: Mark globally disabled Kprobes in debugfs interface Documentation/kprobes.txt | 5 +- kernel/kprobes.c | 279 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 213 insertions(+), 71 deletions(-) -- 1.8.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/