X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=mm%2Ffadvise.c;h=001877e32f0c57b4712e524393152e2115fa2690;hb=fd97ed8c874dc479d868ad33311ad227ff0c98ee;hp=b8a5bc66b0c09b915237ab600cdeceaa81b8d153;hpb=2ca0a9d80c3a2cd3917b768080cce7f59b9bc490;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git diff --git a/mm/fadvise.c b/mm/fadvise.c index b8a5bc66b0c0..001877e32f0c 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c @@ -68,8 +68,12 @@ SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice) goto out; } - /* Careful about overflows. Len == 0 means "as much as possible" */ - endbyte = offset + len; + /* + * Careful about overflows. Len == 0 means "as much as possible". Use + * unsigned math because signed overflows are undefined and UBSan + * complains. + */ + endbyte = (u64)offset + (u64)len; if (!len || endbyte < len) endbyte = -1; else