lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 30 Nov 2018 09:29:57 +0100 From: Paolo Abeni <pabeni@...hat.com> To: Eric Dumazet <eric.dumazet@...il.com>, netdev@...r.kernel.org Cc: "David S. Miller" <davem@...emloft.net> Subject: Re: [RFC PATCH 1/4] indirect call wrappers: helpers to speed-up indirect calls of builtin Hi, On Thu, 2018-11-29 at 15:25 -0800, Eric Dumazet wrote: > > On 11/29/2018 03:00 PM, Paolo Abeni wrote: > > This header define a bunch of helpers that allow avoiding the > > retpoline overhead when calling builtin functions via function pointers. > > It boils down to explicitly comparing the function pointers to > > known builtin functions and eventually invoke directly the latter. > > > > The macro defined here implement the boilerplate for the above schema > > and will be used by the next patches. > > > > Suggested-by: Eric Dumazet <Eric Dumazet <edumazet@...gle.com> Oops... typo here. For some reasons checkpatch did not catch it. > > Signed-off-by: Paolo Abeni <pabeni@...hat.com> > > --- > > include/linux/indirect_call_wrapper.h | 77 +++++++++++++++++++++++++++ > > 1 file changed, 77 insertions(+) > > create mode 100644 include/linux/indirect_call_wrapper.h > > > > diff --git a/include/linux/indirect_call_wrapper.h b/include/linux/indirect_call_wrapper.h > > new file mode 100644 > > index 000000000000..57e82b4a166d > > --- /dev/null > > +++ b/include/linux/indirect_call_wrapper.h > > @@ -0,0 +1,77 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > +#ifndef _LINUX_INDIRECT_CALL_WRAPPER_H > > +#define _LINUX_INDIRECT_CALL_WRAPPER_H > > + > > +#ifdef CONFIG_RETPOLINE > > + > > +/* > > + * INDIRECT_CALL_$NR - wrapper for indirect calls with $NR known builtin > > + * @f: function pointer > > + * @name: base name for builtin functions, see INDIRECT_CALLABLE_DECLARE_$NR > > + * @__VA_ARGS__: arguments for @f > > + * > > + * Avoid retpoline overhead for known builtin, checking @f vs each of them and > > + * eventually invoking directly the builtin function. Fallback to the indirect > > + * call > > + */ > > +#define INDIRECT_CALL_1(f, name, ...) \ > > + ({ \ > > + f == name ## 1 ? name ## 1(__VA_ARGS__) : \ > > likely(f == name ## 1) ? ... Thank you for the feedback! I thought about the above, and than I avoided it, because I was not 100% it would fit cases (if any) where we have 2 or more built-in equally likely. I guess we can address such cases if and when they will pop-up. I'll do some more benchmarks with the branch prediction hints, and then if there are no surprises, I'll add them in v1. BTW I would like to give the correct attribution here. Does 'Suggested- by' fit? should I list some other guy @google? Thanks, Paols
Powered by blists - more mailing lists