Skip to content
  • Linus Torvalds's avatar
    Fix caller information for warn_slowpath_null · 0f6f49a8
    Linus Torvalds authored
    Ian Campbell noticed that since "Eliminate thousands of warnings with
    gcc 3.2 build" (commit 57adc4d2
    
    ) all
    WARN_ON()'s currently appear to come from warn_slowpath_null(), eg:
    
      WARNING: at kernel/softirq.c:143 warn_slowpath_null+0x1c/0x20()
    
    because now that warn_slowpath_null() is in the call path, the
    __builtin_return_address(0) returns that, rather than the place that
    caused the warning.
    
    Fix this by splitting up the warn_slowpath_null/fmt cases differently,
    using a common helper function, and getting the return address in the
    right place.  This also happens to avoid the unnecessary stack usage for
    the non-stdargs case, and just generally cleans things up.
    
    Make the function name printout use %pS while at it.
    
    Cc: Ian Campbell <ian.campbell@citrix.com>
    Cc: Jesper Nilsson <jesper.nilsson@axis.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0f6f49a8