• Coly Li's avatar
    bcache: fix input overflow to cache set io_error_limit · b1500840
    Coly Li authored
    c->error_limit is in type unsigned int, it is set via cache set sysfs
    file io_error_limit. Inside the bcache code, input string is converted
    by strtoul_or_return() and set the converted value to c->error_limit.
    
    Because the converted value is unsigned long, and c->error_limit is
    unsigned int, if the input is large enought, overflow will happen to
    c->error_limit.
    
    This patch uses sysfs_strtoul_clamp() to convert input string, and set
    the range in [0, UINT_MAX] to avoid the potential overflow.
    Signed-off-by: default avatarColy Li <colyli@suse.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    b1500840
sysfs.c 26.9 KB