From: Chengguang Xu Date: Wed, 30 May 2018 08:47:06 +0000 (+0800) Subject: ceph: strengthen rsize/wsize/readdir_max_bytes validation X-Git-Tag: v5.15~8597^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8db0c7596f1258b28f32a38f2d5bbc0d63c104c9;p=platform%2Fkernel%2Flinux-starfive.git ceph: strengthen rsize/wsize/readdir_max_bytes validation The check (intval < PAGE_SIZE) will involve type cast, so even when specifying negative value to rsize/wsize/readdir_max_bytes, it will pass the validation check successfully. Signed-off-by: Chengguang Xu Reviewed-by: Ilya Dryomov Signed-off-by: Ilya Dryomov --- diff --git a/fs/ceph/super.c b/fs/ceph/super.c index b4ff139..cec1d33 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -259,12 +259,12 @@ static int parse_fsopt_token(char *c, void *private) break; /* misc */ case Opt_wsize: - if (intval < PAGE_SIZE || intval > CEPH_MAX_WRITE_SIZE) + if (intval < (int)PAGE_SIZE || intval > CEPH_MAX_WRITE_SIZE) return -EINVAL; fsopt->wsize = ALIGN(intval, PAGE_SIZE); break; case Opt_rsize: - if (intval < PAGE_SIZE || intval > CEPH_MAX_READ_SIZE) + if (intval < (int)PAGE_SIZE || intval > CEPH_MAX_READ_SIZE) return -EINVAL; fsopt->rsize = ALIGN(intval, PAGE_SIZE); break; @@ -289,7 +289,7 @@ static int parse_fsopt_token(char *c, void *private) fsopt->max_readdir = intval; break; case Opt_readdir_max_bytes: - if (intval < PAGE_SIZE && intval != 0) + if (intval < (int)PAGE_SIZE && intval != 0) return -EINVAL; fsopt->max_readdir_bytes = intval; break;