lkml.org 
[lkml]   [2016]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] clockevents/drivers/timer-atmel-pit: fix double free_irq
    Date
    clockevents_exchange_device() changes the state from detached to shutdown
    and so at that point the IRQ has not yet been requested.

    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    ---

    Hi Sebastian,

    This patch fixes the last warning for preempt-rt on at91. It applies on
    v4.4.4-rt11. Note that the whome PIT/TCB mess will be fixed in another way in
    the mainline as we are reworking the tcb driver to avoid using the pit when
    booting.

    drivers/clocksource/timer-atmel-pit.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/clocksource/timer-atmel-pit.c b/drivers/clocksource/timer-atmel-pit.c
    index a7abdb6638cd..7a40f7e88468 100644
    --- a/drivers/clocksource/timer-atmel-pit.c
    +++ b/drivers/clocksource/timer-atmel-pit.c
    @@ -46,6 +46,7 @@ struct pit_data {
    u32 cycle;
    u32 cnt;
    unsigned int irq;
    + bool irq_requested;
    struct clk *mck;
    };

    @@ -96,7 +97,10 @@ static int pit_clkevt_shutdown(struct clock_event_device *dev)

    /* disable irq, leaving the clocksource active */
    pit_write(data->base, AT91_PIT_MR, (data->cycle - 1) | AT91_PIT_PITEN);
    - free_irq(data->irq, data);
    + if (data->irq_requested) {
    + free_irq(data->irq, data);
    + data->irq_requested = false;
    + }
    return 0;
    }

    @@ -115,6 +119,8 @@ static int pit_clkevt_set_periodic(struct clock_event_device *dev)
    if (ret)
    panic(pr_fmt("Unable to setup IRQ\n"));

    + data->irq_requested = true;
    +
    /* update clocksource counter */
    data->cnt += data->cycle * PIT_PICNT(pit_read(data->base, AT91_PIT_PIVR));
    pit_write(data->base, AT91_PIT_MR,
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-03-17 22:01    [W:3.545 / U:0.680 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site