• Juri Lelli's avatar
    sched/deadline: Restrict user params max value to 2^63 ns · b0827819
    Juri Lelli authored
    Michael Kerrisk noticed that creating SCHED_DEADLINE reservations
    with certain parameters (e.g, a runtime of something near 2^64 ns)
    can cause a system freeze for some amount of time.
    
    The problem is that in the interface we have
    
     u64 sched_runtime;
    
    while internally we need to have a signed runtime (to cope with
    budget overruns)
    
     s64 runtime;
    
    At the time we setup a new dl_entity we copy the first value in
    the second. The cast turns out with negative values when
    sched_runtime is too big, and this causes the scheduler to go crazy
    right from the start.
    
    Moreover, considering how we deal with deadlines wraparound
    
     (s64)(a - b) < 0
    
    we also have to restrict acceptable values for sched_{deadline,period}.
    
    This patch fixes the thing checking that user parameters are always
    below 2^63 ns (still large enough for everyone).
    
    It also rewrites other conditions that we check, since in
    __checkparam_dl we don't have to deal with deadline wraparounds
    and what we have now erroneously fails when the difference between
    values is too big.
    Reported-by: default avatarMichael Kerrisk <mtk.manpages@gmail.com>
    Suggested-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Signed-off-by: default avatarJuri Lelli <juri.lelli@gmail.com>
    Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Cc: Dario Faggioli<raistlin@linux.it>
    Cc: Dave Jones <davej@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20140513141131.20d944f81633ee937f256385@gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b0827819
core.c 189 KB