lkml.org 
[lkml]   [2021]   [Sep]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 011/236] posix-cpu-timers: Force next expiration recalc after itimer reset
    Date
    From: Frederic Weisbecker <frederic@kernel.org>

    [ Upstream commit 406dd42bd1ba0c01babf9cde169bb319e52f6147 ]

    When an itimer deactivates a previously armed expiration, it simply doesn't
    do anything. As a result the process wide cputime counter keeps running and
    the tick dependency stays set until it reaches the old ghost expiration
    value.

    This can be reproduced with the following snippet:

    void trigger_process_counter(void)
    {
    struct itimerval n = {};

    n.it_value.tv_sec = 100;
    setitimer(ITIMER_VIRTUAL, &n, NULL);
    n.it_value.tv_sec = 0;
    setitimer(ITIMER_VIRTUAL, &n, NULL);
    }

    Fix this with resetting the relevant base expiration. This is similar to
    disarming a timer.

    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210726125513.271824-4-frederic@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/time/posix-cpu-timers.c | 2 --
    1 file changed, 2 deletions(-)

    diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
    index 08c033b80256..d3d42b7637a1 100644
    --- a/kernel/time/posix-cpu-timers.c
    +++ b/kernel/time/posix-cpu-timers.c
    @@ -1346,8 +1346,6 @@ void set_process_cpu_timer(struct task_struct *tsk, unsigned int clkid,
    }
    }

    - if (!*newval)
    - return;
    *newval += now;
    }

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-09-13 15:34    [W:4.036 / U:0.372 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site