sched: Defend cfs and rt bandwidth quota against overflow
authorHuaixin Chang <changhuaixin@linux.alibaba.com>
Sat, 25 Apr 2020 10:52:48 +0000 (18:52 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 19 May 2020 18:34:14 +0000 (20:34 +0200)
commitd505b8af58912ae1e1a211fabc9995b19bd40828
treed3eb4c4bd5d8670ee6aaaa56993a8ed366160de7
parentdbe9337109c2705f08e6a00392f991eb2d2570a5
sched: Defend cfs and rt bandwidth quota against overflow

When users write some huge number into cpu.cfs_quota_us or
cpu.rt_runtime_us, overflow might happen during to_ratio() shifts of
schedulable checks.

to_ratio() could be altered to avoid unnecessary internal overflow, but
min_cfs_quota_period is less than 1 << BW_SHIFT, so a cutoff would still
be needed. Set a cap MAX_BW for cfs_quota_us and rt_runtime_us to
prevent overflow.

Signed-off-by: Huaixin Chang <changhuaixin@linux.alibaba.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Ben Segall <bsegall@google.com>
Link: https://lkml.kernel.org/r/20200425105248.60093-1-changhuaixin@linux.alibaba.com
kernel/sched/core.c
kernel/sched/rt.c
kernel/sched/sched.h