[PATCH] objtool: Remove btrfs_assertfail() from the noreturn exceptions list

Ingo Molnar
2023-06-28T09:32:45Z

* Ingo Molnar <mingo@kernel.org> wrote:

>
> * Ingo Molnar <mingo@kernel.org> wrote:
>
> > Linus,
> >
> > Please pull the latest objtool/core git tree from:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git objtool-core-2023-06-27
> >
> > # HEAD: 301cf77e21317b3465c5e2bb0188df24bbf1c2e2 x86/orc: Make the is_callthunk() definition depend on CONFIG_BPF_JIT=y
>
> I forgot to mention that there's a new conflict when you merge this, in
> tools/objtool/check.c, plus a semantic conflict in the new
> tools/objtool/noreturns.h file - to remove the 'btrfs_assertfail' entry
> from the new tools/objtool/noreturns.h file.
>
> Our -tip CI conflict resolution can be double checked here:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/merge

I believe the (minor & silent) semantic conflict was overlooked in your
upstream merge:

6f612579be9d Merge tag 'objtool-core-2023-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

I've fixed it up with the attached patch.

[ There was no harm done to build correctness or functionality AFAICS,
because the extra leftover entry in upstream tools/objtool/noreturns.h is
now meaningless, as btrfs_assertfail() has become a macro that will not
show up as an ELF symbol. ]

Thanks,

Ingo

======================>
From: Ingo Molnar <mingo@kernel.org>
Date: Wed, 28 Jun 2023 11:16:03 +0200
Subject: [PATCH] objtool: Remove btrfs_assertfail() from the noreturn
exceptions list

Upstream merge commit:

6f612579be9d Merge tag 'objtool-core-2023-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

... generated a (minor) semantic conflict that was not resolved: the btrfs_assertfail()
entry that was removed from the list in tools/objtool/check.c in:

b831306b3b7d ("btrfs: print assertion failure report and stack trace from the same line")

... because btrfs_assertfail() was changed from a noreturn function into
a macro.

But the list was moved to a different file, in a different enumeration format:

6245ce4ab670 ("objtool: Move noreturn function list to separate file")

And has to be removed from tools/objtool/noreturns.h post-merge as well.

Do it explicitly.

Cc: David Sterba <dsterba@suse.com>
Cc: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
tools/objtool/noreturns.h | 1 -
1 file changed, 1 deletion(-)

diff --git a/tools/objtool/noreturns.h b/tools/objtool/noreturns.h
index 1514e84d5cc4..e45c7cb1d5bc 100644
--- a/tools/objtool/noreturns.h
+++ b/tools/objtool/noreturns.h
@@ -14,7 +14,6 @@ NORETURN(__stack_chk_fail)
NORETURN(__ubsan_handle_builtin_unreachable)
NORETURN(arch_call_rest_init)
NORETURN(arch_cpu_idle_dead)
-NORETURN(btrfs_assertfail)
NORETURN(cpu_bringup_and_idle)
NORETURN(cpu_startup_entry)
NORETURN(do_exit)