Hello, Konstantin.
On Wed, Feb 27, 2019 at 11:05:44AM +0300, Konstantin Khlebnikov wrote:
Unlike to memory cgroup blkio throttler does not support value suffixes.
It silently ignores everything after last digit. For example this command
will set rate limit 1 byte per second rather than 1 megabyte per second:
# echo "7:0 1M" > blkio.throttle.read_bps_device
# cat blkio.throttle.read_bps_device
7:0 1
Cgroup2 interface has the same flaw:
# echo "7:0 rbps=1M" > io.max
# cat io.max
7:0 rbps=1 wbps=max riops=max wiops=max
Also sscanf does not care much about overflows.
This patch uses modern function kstrtou64 for parsing.
It rejects trailing garbage and detects integer overflows.
Also this patch handles iops limit overflows for cgroup-v1 in the same as
cgroup-v2: limits >= UINT_MAX becomes unlimited.
Fixes: 2ee867dcfa2e ("blkcg: implement interface for the unified hierarchy")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx>
So, I'd much rather keep the parsing implementations simple. Unless
there's a correctness problem (you mentioned overflowing, how would
that happen?), the simpler the better. I don't think the kernel needs
to be in the business of strict input verification here.
Thanks.