lkml.org 
[lkml]   [2022]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: objtool/urgent] objtool: Fix function fallthrough detection for vmlinux
    The following commit has been merged into the objtool/urgent branch of tip:

    Commit-ID: 08feafe8d1958febf3a9733a3d1564d8fc23340e
    Gitweb: https://git.kernel.org/tip/08feafe8d1958febf3a9733a3d1564d8fc23340e
    Author: Josh Poimboeuf <jpoimboe@redhat.com>
    AuthorDate: Mon, 11 Apr 2022 16:10:32 -07:00
    Committer: Peter Zijlstra <peterz@infradead.org>
    CommitterDate: Tue, 19 Apr 2022 21:58:53 +02:00

    objtool: Fix function fallthrough detection for vmlinux

    Objtool's function fallthrough detection only works on C objects.
    The distinction between C and assembly objects no longer makes sense
    with objtool running on vmlinux.o.

    Now that copy_user_64.S has been fixed up, and an objtool sibling call
    detection bug has been fixed, the asm code is in "compliance" and this
    hack is no longer needed. Remove it.

    Fixes: ed53a0d97192 ("x86/alternative: Use .ibt_endbr_seal to seal indirect calls")
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/b434cff98eca3a60dcc64c620d7d5d405a0f441c.1649718562.git.jpoimboe@redhat.com
    ---
    tools/objtool/check.c | 2 +-
    tools/objtool/include/objtool/objtool.h | 2 +-
    tools/objtool/objtool.c | 1 -
    3 files changed, 2 insertions(+), 3 deletions(-)

    diff --git a/tools/objtool/check.c b/tools/objtool/check.c
    index 0f5d3de..5f10653 100644
    --- a/tools/objtool/check.c
    +++ b/tools/objtool/check.c
    @@ -3310,7 +3310,7 @@ static int validate_branch(struct objtool_file *file, struct symbol *func,
    while (1) {
    next_insn = next_insn_to_validate(file, insn);

    - if (file->c_file && func && insn->func && func != insn->func->pfunc) {
    + if (func && insn->func && func != insn->func->pfunc) {
    WARN("%s() falls through to next function %s()",
    func->name, insn->func->name);
    return 1;
    diff --git a/tools/objtool/include/objtool/objtool.h b/tools/objtool/include/objtool/objtool.h
    index 7a5c13a..a6e72d9 100644
    --- a/tools/objtool/include/objtool/objtool.h
    +++ b/tools/objtool/include/objtool/objtool.h
    @@ -27,7 +27,7 @@ struct objtool_file {
    struct list_head static_call_list;
    struct list_head mcount_loc_list;
    struct list_head endbr_list;
    - bool ignore_unreachables, c_file, hints, rodata;
    + bool ignore_unreachables, hints, rodata;

    unsigned int nr_endbr;
    unsigned int nr_endbr_int;
    diff --git a/tools/objtool/objtool.c b/tools/objtool/objtool.c
    index b09946f..843ff3c 100644
    --- a/tools/objtool/objtool.c
    +++ b/tools/objtool/objtool.c
    @@ -129,7 +129,6 @@ struct objtool_file *objtool_open_read(const char *_objname)
    INIT_LIST_HEAD(&file.static_call_list);
    INIT_LIST_HEAD(&file.mcount_loc_list);
    INIT_LIST_HEAD(&file.endbr_list);
    - file.c_file = !vmlinux && find_section_by_name(file.elf, ".comment");
    file.ignore_unreachables = no_unreachable;
    file.hints = false;

    \
     
     \ /
      Last update: 2022-04-19 22:11    [W:2.190 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site