lkml.org 
[lkml]   [2013]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 004/184] clockevents: Dont allow dummy broadcast timers
    2.6.32-longterm review patch.  If anyone has any objections, please let me know.

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

    From: Mark Rutland <mark.rutland@arm.com>

    commit a7dc19b8652c862d5b7c4d2339bd3c428bd29c4a upstream.

    Currently tick_check_broadcast_device doesn't reject clock_event_devices
    with CLOCK_EVT_FEAT_DUMMY, and may select them in preference to real
    hardware if they have a higher rating value. In this situation, the
    dummy timer is responsible for broadcasting to itself, and the core
    clockevents code may attempt to call non-existent callbacks for
    programming the dummy, eventually leading to a panic.

    This patch makes tick_check_broadcast_device always reject dummy timers,
    preventing this problem.

    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Jon Medhurst (Tixy) <tixy@linaro.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    kernel/time/tick-broadcast.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
    index 57b953f..67fe3d9 100644
    --- a/kernel/time/tick-broadcast.c
    +++ b/kernel/time/tick-broadcast.c
    @@ -67,7 +67,8 @@ static void tick_broadcast_start_periodic(struct clock_event_device *bc)
    */
    int tick_check_broadcast_device(struct clock_event_device *dev)
    {
    - if ((tick_broadcast_device.evtdev &&
    + if ((dev->features & CLOCK_EVT_FEAT_DUMMY) ||
    + (tick_broadcast_device.evtdev &&
    tick_broadcast_device.evtdev->rating >= dev->rating) ||
    (dev->features & CLOCK_EVT_FEAT_C3STOP))
    return 0;
    --
    1.7.12.2.21.g234cd45.dirty




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