lkml.org 
[lkml]   [2013]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 118/118] ARM: 7699/1: sched_clock: Add more notrace to prevent recursion
    Date
    3.5.7.12 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Stephen Boyd <sboyd@codeaurora.org>

    commit cea15092f098b7018e89f64a5a14bb71955965d5 upstream.

    cyc_to_sched_clock() is called by sched_clock() and cyc_to_ns()
    is called by cyc_to_sched_clock(). I suspect that some compilers
    inline both of these functions into sched_clock() and so we've
    been getting away without having a notrace marking. It seems that
    my compiler isn't inlining cyc_to_sched_clock() though, so I'm
    hitting a recursion bug when I enable the function graph tracer,
    causing my system to crash. Marking these functions notrace fixes
    it. Technically cyc_to_ns() doesn't need the notrace because it's
    already marked inline, but let's just add it so that if we ever
    remove inline from that function it doesn't blow up.

    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    arch/arm/kernel/sched_clock.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c
    index 6bbf936..926c98f 100644
    --- a/arch/arm/kernel/sched_clock.c
    +++ b/arch/arm/kernel/sched_clock.c
    @@ -39,12 +39,12 @@ static u32 notrace jiffy_sched_clock_read(void)

    static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read;

    -static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift)
    +static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift)
    {
    return (cyc * mult) >> shift;
    }

    -static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask)
    +static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask)
    {
    u64 epoch_ns;
    u32 epoch_cyc;
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-05-07 21:01    [W:4.085 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site