lkml.org 
[lkml]   [2018]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 018/101] branch-check: fix long->int truncation when profiling branches
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Mikulas Patocka <mpatocka@redhat.com>

    commit 2026d35741f2c3ece73c11eb7e4a15d7c2df9ebe upstream.

    The function __builtin_expect returns long type (see the gcc
    documentation), and so do macros likely and unlikely. Unfortunatelly, when
    CONFIG_PROFILE_ANNOTATED_BRANCHES is selected, the macros likely and
    unlikely expand to __branch_check__ and __branch_check__ truncates the
    long type to int. This unintended truncation may cause bugs in various
    kernel code (we found a bug in dm-writecache because of it), so it's
    better to fix __branch_check__ to return long.

    Link: http://lkml.kernel.org/r/alpine.LRH.2.02.1805300818140.24812@file01.intranet.prod.int.rdu2.redhat.com

    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 1f0d69a9fc815 ("tracing: profile likely and unlikely annotations")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    include/linux/compiler.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/include/linux/compiler.h
    +++ b/include/linux/compiler.h
    @@ -113,7 +113,7 @@ void ftrace_likely_update(struct ftrace_
    #define unlikely_notrace(x) __builtin_expect(!!(x), 0)

    #define __branch_check__(x, expect) ({ \
    - int ______r; \
    + long ______r; \
    static struct ftrace_branch_data \
    __attribute__((__aligned__(4))) \
    __attribute__((section("_ftrace_annotated_branch"))) \

    \
     
     \ /
      Last update: 2018-07-01 20:22    [W:4.136 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site