From: "Luis R. Rodriguez" <mcgrof@kernel.org> To: "H. Peter Anvin" <hpa@zytor.com> Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, X86 ML <x86@kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Andy Lutomirski <luto@amacapital.net>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Rusty Russell <rusty@rustcorp.com.au>, David Vrabel <david.vrabel@citrix.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Michael Brown <mcb30@ipxe.org>, Juergen Gross <jgross@suse.com>, Ming Lei <ming.lei@canonical.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, linux-arch@vger.kernel.org, Russell King <linux@arm.linux.org.uk>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, jbaron@akamai.com, ananth@in.ibm.com, anil.s.keshavamurthy@intel.com, David Miller <davem@davemloft.net>, Masami Hiramatsu <masami.hiram> Subject: Re: [RFC v2 2/7] tables.h: add linker table support Date: Wed, 24 Feb 2016 01:54:58 +0100 [thread overview] Message-ID: <20160224005458.GK25240@wotan.suse.de> (raw) In-Reply-To: <56CCF41F.8080507@zytor.com> On Tue, Feb 23, 2016 at 04:06:55PM -0800, H. Peter Anvin wrote: > On 02/23/2016 03:36 PM, Luis R. Rodriguez wrote: > > > >> 4. the only useful operator on a range is "is address X inside this > >> range"; this operator is likely *not* useful for a table, since ^^^^^^^^^^^^ > >> if you have to ever invoke it you are probably doing something very > >> wrong. > > > > kprobe uses it :P > > > > Could you explain how? Sorry I misread this as "unless you are a table", kprobes has two ranges, one is a table (blacklist) and the other just a range (for kprobes); only kprobes uses "address inside this range", as reflected below. So I agree with you. index d10ab6b9b5e0..d816c659f358 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1328,8 +1328,7 @@ out: bool __weak arch_within_kprobe_blacklist(unsigned long addr) { /* The __kprobes marked functions and entry code must not be probed */ - return addr >= (unsigned long)__kprobes_text_start && - addr < (unsigned long)__kprobes_text_end; + return LINKTABLE_ADDR_WITHIN(kprobes, addr); } bool within_kprobe_blacklist(unsigned long addr) diff --git a/kernel/kprobes.c b/kernel/kprobes.c index d10ab6b9b5e0..d816c659f358 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1328,8 +1328,7 @@ out: bool __weak arch_within_kprobe_blacklist(unsigned long addr) { /* The __kprobes marked functions and entry code must not be probed */ - return addr >= (unsigned long)__kprobes_text_start && - addr < (unsigned long)__kprobes_text_end; + return LINKTABLE_ADDR_WITHIN(kprobes, addr); } What about rebranding general section primitives under section.h #define DECLARE_SECTION_TEXT_TYPE(type, name) \ extern const type name[], name##__end[]; #define DECLARE_SECTION_TEXT(name) \ DECLARE_SECTION_TEXT_TYPE(char, name) Then tables.h would use the TYPE version: #define DECLARE_LINKTABLE_TEXT(type, name) \ DECLARE_SECTION_TEXT_TYPE(type, name) Since I've been making _TEXT the implicit type for section names(SECTION_INIT is .init.text) the above could just be DECLARE_SECTION_TYPE() and DECLARE_SECTION() for text if we prefer. Luis
WARNING: multiple messages have this Message-ID (diff)
From: "Luis R. Rodriguez" <mcgrof@kernel.org> To: "H. Peter Anvin" <hpa@zytor.com> Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, X86 ML <x86@kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Andy Lutomirski <luto@amacapital.net>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Rusty Russell <rusty@rustcorp.com.au>, David Vrabel <david.vrabel@citrix.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Michael Brown <mcb30@ipxe.org>, Juergen Gross <jgross@suse.com>, Ming Lei <ming.lei@canonical.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, linux-arch@vger.kernel.org, Russell King <linux@arm.linux.org.uk>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, jbaron@akamai.com, ananth@in.ibm.com, anil.s.keshavamurthy@intel.com, David Miller <davem@davemloft.net>, Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>, andriy.shevchenko@linux.intel.com, David Woodhouse <dwmw2@infradead.org>, "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>, linux-security-module <linux-security-module@vger.kernel.org> Subject: Re: [RFC v2 2/7] tables.h: add linker table support Date: Wed, 24 Feb 2016 01:54:58 +0100 [thread overview] Message-ID: <20160224005458.GK25240@wotan.suse.de> (raw) Message-ID: <20160224005458.aby7x3Ha4Qbha57loZOz4xkyxWO9xUKdCb_M2QHHpvg@z> (raw) In-Reply-To: <56CCF41F.8080507@zytor.com> On Tue, Feb 23, 2016 at 04:06:55PM -0800, H. Peter Anvin wrote: > On 02/23/2016 03:36 PM, Luis R. Rodriguez wrote: > > > >> 4. the only useful operator on a range is "is address X inside this > >> range"; this operator is likely *not* useful for a table, since ^^^^^^^^^^^^ > >> if you have to ever invoke it you are probably doing something very > >> wrong. > > > > kprobe uses it :P > > > > Could you explain how? Sorry I misread this as "unless you are a table", kprobes has two ranges, one is a table (blacklist) and the other just a range (for kprobes); only kprobes uses "address inside this range", as reflected below. So I agree with you. index d10ab6b9b5e0..d816c659f358 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1328,8 +1328,7 @@ out: bool __weak arch_within_kprobe_blacklist(unsigned long addr) { /* The __kprobes marked functions and entry code must not be probed */ - return addr >= (unsigned long)__kprobes_text_start && - addr < (unsigned long)__kprobes_text_end; + return LINKTABLE_ADDR_WITHIN(kprobes, addr); } bool within_kprobe_blacklist(unsigned long addr) diff --git a/kernel/kprobes.c b/kernel/kprobes.c index d10ab6b9b5e0..d816c659f358 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1328,8 +1328,7 @@ out: bool __weak arch_within_kprobe_blacklist(unsigned long addr) { /* The __kprobes marked functions and entry code must not be probed */ - return addr >= (unsigned long)__kprobes_text_start && - addr < (unsigned long)__kprobes_text_end; + return LINKTABLE_ADDR_WITHIN(kprobes, addr); } What about rebranding general section primitives under section.h #define DECLARE_SECTION_TEXT_TYPE(type, name) \ extern const type name[], name##__end[]; #define DECLARE_SECTION_TEXT(name) \ DECLARE_SECTION_TEXT_TYPE(char, name) Then tables.h would use the TYPE version: #define DECLARE_LINKTABLE_TEXT(type, name) \ DECLARE_SECTION_TEXT_TYPE(type, name) Since I've been making _TEXT the implicit type for section names(SECTION_INIT is .init.text) the above could just be DECLARE_SECTION_TYPE() and DECLARE_SECTION() for text if we prefer. Luis
next prev parent reply other threads:[~2016-02-24 0:55 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-02-19 13:45 [RFC v2 0/7] linux: add linker tables Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 1/7] sections.h: add sections header to collect all section info Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 16:23 ` Greg KH 2016-02-19 20:06 ` Luis R. Rodriguez 2016-02-19 21:25 ` Greg KH 2016-02-19 21:59 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 2/7] tables.h: add linker table support Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 20:25 ` H. Peter Anvin 2016-02-19 20:25 ` H. Peter Anvin 2016-02-19 21:48 ` Luis R. Rodriguez 2016-02-23 23:08 ` Luis R. Rodriguez 2016-02-23 23:08 ` Luis R. Rodriguez 2016-02-23 23:22 ` H. Peter Anvin 2016-02-23 23:22 ` H. Peter Anvin 2016-02-23 23:36 ` Luis R. Rodriguez 2016-02-23 23:36 ` Luis R. Rodriguez 2016-02-24 0:06 ` H. Peter Anvin 2016-02-24 0:06 ` H. Peter Anvin 2016-02-24 0:54 ` Luis R. Rodriguez [this message] 2016-02-24 0:54 ` Luis R. Rodriguez 2016-02-19 20:33 ` H. Peter Anvin 2016-02-19 20:33 ` H. Peter Anvin 2016-02-19 21:12 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 3/7] firmware: port built-in section to linker table Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-29 10:12 ` David Woodhouse 2016-02-29 10:12 ` David Woodhouse 2016-02-29 18:56 ` Luis R. Rodriguez 2016-02-29 18:56 ` Luis R. Rodriguez 2016-05-02 18:34 ` Kees Cook 2016-05-02 18:34 ` Kees Cook 2016-05-02 18:41 ` Greg KH 2016-05-02 18:41 ` Greg KH 2016-05-03 17:08 ` Luis R. Rodriguez 2016-05-03 17:08 ` Luis R. Rodriguez 2016-05-03 17:07 ` Luis R. Rodriguez 2016-05-03 17:07 ` Luis R. Rodriguez 2016-05-03 17:10 ` Luis R. Rodriguez 2016-05-03 17:10 ` Luis R. Rodriguez 2016-05-03 17:11 ` Luis R. Rodriguez 2016-05-03 17:11 ` Luis R. Rodriguez 2016-05-03 17:21 ` Kees Cook 2016-05-03 17:21 ` Kees Cook 2016-05-03 18:12 ` Greg KH 2016-05-03 18:12 ` Greg KH 2016-03-01 16:10 ` James Bottomley 2016-03-01 16:10 ` James Bottomley 2016-03-01 17:54 ` Luis R. Rodriguez 2016-04-29 19:24 ` Luis R. Rodriguez 2016-04-29 19:24 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 4/7] asm/sections: add a generic push_section_tbl() Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 20:26 ` H. Peter Anvin 2016-02-19 21:06 ` Luis R. Rodriguez 2016-02-22 2:55 ` H. Peter Anvin 2016-02-26 14:56 ` Heiko Carstens 2016-05-20 19:53 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 5/7] jump_label: port __jump_table to linker tables Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 6/7] dynamic_debug: port to use " Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 13:45 ` [RFC v2 7/7] kprobes: port to linker table Luis R. Rodriguez 2016-02-19 13:45 ` Luis R. Rodriguez 2016-02-19 14:15 ` Russell King - ARM Linux 2016-02-19 14:15 ` Russell King - ARM Linux 2016-02-19 14:55 ` Luis R. Rodriguez 2016-02-22 1:34 ` 平松雅巳 / HIRAMATU,MASAMI 2016-02-22 1:34 ` 平松雅巳 / HIRAMATU,MASAMI 2016-02-23 0:52 ` [Xen-devel] " Luis R. Rodriguez 2016-02-23 0:52 ` Luis R. Rodriguez 2016-07-21 23:53 ` Luis R. Rodriguez 2016-07-21 23:53 ` Luis R. Rodriguez 2016-02-19 20:16 ` [RFC v2 0/7] linux: add linker tables H. Peter Anvin 2016-02-19 21:19 ` Luis R. Rodriguez 2016-02-19 21:19 ` Luis R. Rodriguez
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20160224005458.GK25240@wotan.suse.de \ --to=mcgrof@kernel.org \ --cc=ananth@in.ibm.com \ --cc=anil.s.keshavamurthy@intel.com \ --cc=arnd@arndb.de \ --cc=benh@kernel.crashing.org \ --cc=boris.ostrovsky@oracle.com \ --cc=bp@alien8.de \ --cc=davem@davemloft.net \ --cc=david.vrabel@citrix.com \ --cc=gregkh@linuxfoundation.org \ --cc=hpa@zytor.com \ --cc=jbaron@akamai.com \ --cc=jgross@suse.com \ --cc=konrad.wilk@oracle.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=luto@amacapital.net \ --cc=mcb30@ipxe.org \ --cc=ming.lei@canonical.com \ --cc=mingo@redhat.com \ --cc=rusty@rustcorp.com.au \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).