From: Prarit Bhargava <prarit@redhat.com>
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Oleg Nesterov <oleg@redhat.com>,
Rusty Russell <rusty@rustcorp.com.au>
Cc: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH resend] init/main.c: Simplify initcall_blacklisted()
Date: Thu, 24 Mar 2016 13:16:10 -0400 [thread overview]
Message-ID: <56F420DA.7040302@redhat.com> (raw)
In-Reply-To: <1458602066-15255-1-git-send-email-linux@rasmusvillemoes.dk>
On 03/21/2016 07:14 PM, Rasmus Villemoes wrote:
> Using kasprintf to get the function name makes us look up the name
> twice, along with all the vsnprintf overhead of parsing the format
> string etc. It also means there is an allocation failure case to deal
> with. Since symbol_string in vsprintf.c would anyway allocate an array
> of size KSYM_SYMBOL_LEN on the stack, that might as well be done up
> here.
>
> Moreover, since this is a debug feature and the blacklisted_initcalls
> list is usually empty, we might as well test that and thus avoid
> looking up the symbol name even once in the common case.
>
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Prarit Bhargava <prarit@redhat.com>
P.
> ---
> init/main.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/init/main.c b/init/main.c
> index b3c6e363ae18..d76d94cd537c 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -706,21 +706,20 @@ static int __init initcall_blacklist(char *str)
> static bool __init_or_module initcall_blacklisted(initcall_t fn)
> {
> struct blacklist_entry *entry;
> - char *fn_name;
> + char fn_name[KSYM_SYMBOL_LEN];
>
> - fn_name = kasprintf(GFP_KERNEL, "%pf", fn);
> - if (!fn_name)
> + if (list_empty(&blacklisted_initcalls))
> return false;
>
> + sprint_symbol_no_offset(fn_name, (unsigned long)fn);
> +
> list_for_each_entry(entry, &blacklisted_initcalls, next) {
> if (!strcmp(fn_name, entry->buf)) {
> pr_debug("initcall %s blacklisted\n", fn_name);
> - kfree(fn_name);
> return true;
> }
> }
>
> - kfree(fn_name);
> return false;
> }
> #else
>
prev parent reply other threads:[~2016-03-24 17:16 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-17 0:25 [RFC/PATCH] init/main.c: Simplify initcall_blacklisted() Rasmus Villemoes
2015-01-19 19:19 ` Oleg Nesterov
2015-01-20 1:05 ` Rusty Russell
2015-01-20 10:49 ` Prarit Bhargava
2015-01-20 18:05 ` Oleg Nesterov
2015-01-20 18:39 ` Prarit Bhargava
2016-03-21 23:14 ` [PATCH resend] " Rasmus Villemoes
2016-03-22 3:27 ` Rusty Russell
2016-03-23 23:54 ` Rasmus Villemoes
2016-03-24 17:16 ` Prarit Bhargava [this message]
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=56F420DA.7040302@redhat.com \
--to=prarit@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=oleg@redhat.com \
--cc=rusty@rustcorp.com.au \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.