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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Jun 2020 07:31:07 +0000 (09:31 +0200)
commit9fa3b0bd9914133cf362a1719af522fa3fddee1e
tree7de697fdab6566cc33097ad0b3a9bd9ed6964fc4
parentfecf17b609a7edc68c6ef8fa4750d2e75223a6b4
sched: Defend cfs and rt bandwidth quota against overflow

[ Upstream commit d505b8af58912ae1e1a211fabc9995b19bd40828 ]

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
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/sched/core.c
kernel/sched/rt.c
kernel/sched/sched.h