Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752826AbbGSDQG (ORCPT ); Sat, 18 Jul 2015 23:16:06 -0400 Received: from mail4.hitachi.co.jp ([133.145.228.5]:39212 "EHLO mail4.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752560AbbGSDQE (ORCPT ); Sat, 18 Jul 2015 23:16:04 -0400 Message-ID: <55AB166B.9040509@hitachi.com> Date: Sun, 19 Jul 2015 12:15:55 +0900 From: Masami Hiramatsu Organization: Hitachi, Ltd., Japan User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Ingo Molnar CC: Pratyush Anand , Ananth N Mavinakayanahalli , Rusty Russell , Linux Kernel Mailing List , Ingo Molnar , Rob Landley , "H. Peter Anvin" , Thomas Gleixner , "David S. Miller" Subject: Re: [PATCH tip/master 1/3] kprobes: Support blacklist functions in module References: <20150716071053.14218.82072.stgit@localhost.localdomain> <20150716071055.14218.64129.stgit@localhost.localdomain> <20150717121037.GA9437@gmail.com> In-Reply-To: <20150717121037.GA9437@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2711 Lines: 79 On 2015/07/17 21:10, Ingo Molnar wrote: > > * Masami Hiramatsu wrote: > >> To blacklist the functions in a module (e.g. user-defined >> kprobe handler and the functions invoked from it), expand >> blacklist support for modules. >> With this change, users can use NOKPROBE_SYMBOL() macro in >> their own modules. > > Btw., whatever happened with renaming '__kprobes' to '__nokprobe' and using that > consistently to blacklist certain functions? Yes, in this part, __kprobes marked functions placed in .kprobes.text section are safely added to the blacklist :) ----- + if (err >= 0 && __kprobes_text_start != __kprobes_text_end) { + /* The __kprobes marked functions must not be probed */ + err = kprobe_blacklist_add_range( + (unsigned long)__kprobes_text_start, + (unsigned long)__kprobes_text_end); + } ----- > > Also, shouldn't we convert such instances: > > static int notifier_call_chain(struct notifier_block **nl, > unsigned long val, void *v, > int nr_to_call, int *nr_calls) > > ... > > NOKPROBE_SYMBOL(notifier_call_chain); > > to: > > static int __nokprobe notifier_call_chain(struct notifier_block **nl, > unsigned long val, void *v, > int nr_to_call, int *nr_calls) > > ? For some symbols we can do that. But it can conflict with other __section attributes e.g. __sched, since a function must be placed in only one section. So, IMHO, using section for expressing its attribute is not a good idea, but I couldn't find another option in common function attribute. https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes Thus I've introduced NOKPROBE_SYMBOL macro which stores the target function addresses (not the function itself) in the _kprobe_blacklist section. Thank you, > > I.e. instead of extending it to modules we should eliminate NOKPROBE_SYMBOL() in > favor of marking functions as __nokprobe which is the standard syntax for marking > functions. > > Thanks, > > Ingo > -- Masami HIRAMATSU Linux Technology Research Center, System Productivity Research Dept. Center for Technology Innovation - Systems Engineering Hitachi, Ltd., Research & Development Group E-mail: masami.hiramatsu.pt@hitachi.com -- 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/