I ran into this: UBSAN: Undefined behaviour in fs/read_write.c:251:11 signed integer overflow: 9223372036854775805 + 9223372036854775805 cannot be represented in type 'long long int' Use unsigned types to do math, it doesn't throw a UBSAN warning when it does overflow.This patch doesn't change generated code. Signed-off-by: Hongbo Yao <yaohongbo@xxxxxxxxxx> --- fs/read_write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/read_write.c b/fs/read_write.c index 8f08d4a2aa9a..0509e81afc8e 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -248,7 +248,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int whence) retval = file->f_pos; goto out; } - offset += file->f_pos; + offset = (u64)file->f_pos + (u64)offset; break; case SEEK_DATA: /* -- 2.20.1