[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211119203135.clplwzh3hyo5xddg@treble>
Date: Fri, 19 Nov 2021 12:31:35 -0800
From: Josh Poimboeuf <jpoimboe@...hat.com>
To: Marco Elver <elver@...gle.com>
Cc: "Paul E. McKenney" <paulmck@...nel.org>,
Alexander Potapenko <glider@...gle.com>,
Boqun Feng <boqun.feng@...il.com>,
Borislav Petkov <bp@...en8.de>,
Dmitry Vyukov <dvyukov@...gle.com>,
Ingo Molnar <mingo@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Waiman Long <longman@...hat.com>,
Will Deacon <will@...nel.org>, kasan-dev@...glegroups.com,
linux-arch@...r.kernel.org, linux-doc@...r.kernel.org,
linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, x86@...nel.org
Subject: Re: [PATCH v2 23/23] objtool, kcsan: Remove memory barrier
instrumentation from noinstr
On Thu, Nov 18, 2021 at 09:10:27AM +0100, Marco Elver wrote:
> @@ -1071,12 +1071,7 @@ static void annotate_call_site(struct objtool_file *file,
> return;
> }
>
> - /*
> - * Many compilers cannot disable KCOV with a function attribute
> - * so they need a little help, NOP out any KCOV calls from noinstr
> - * text.
> - */
> - if (insn->sec->noinstr && sym->kcov) {
> + if (insn->sec->noinstr && sym->removable_instr) {
> if (reloc) {
> reloc->type = R_NONE;
> elf_write_reloc(file->elf, reloc);
I'd love to have a clearer name than 'removable_instr', though I'm
having trouble coming up with something.
'profiling_func'?
Profiling isn't really accurate but maybe it gets the point across. I'm
definitely open to other suggestions.
Also, the above code isn't very self-evident so there still needs to be
a comment there, like:
/*
* Many compilers cannot disable KCOV or sanitizer calls with a
* function attribute so they need a little help, NOP out any
* such calls from noinstr text.
*/
> @@ -1991,6 +1986,32 @@ static int read_intra_function_calls(struct objtool_file *file)
> return 0;
> }
>
> +static bool is_removable_instr(const char *name)
> +{
> + /*
> + * Many compilers cannot disable KCOV with a function attribute so they
> + * need a little help, NOP out any KCOV calls from noinstr text.
> + */
> + if (!strncmp(name, "__sanitizer_cov_", 16))
> + return true;
A comment is good here, but the NOP-ing bit seems out of place.
--
Josh
Powered by blists - more mailing lists