From: Andrzej Hajda Date: Mon, 15 Feb 2016 14:35:21 +0000 (+0100) Subject: drivers: char: mem: fix IS_ERROR_VALUE usage X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ecb63a1b644c77a383b05e44e931602ae5f3d2c6;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git drivers: char: mem: fix IS_ERROR_VALUE usage IS_ERR_VALUE macro should be used only with unsigned long type. Specifically it works incorrectly with longer types. The patch follows conclusion from discussion on LKML [1][2]. [1]: http://permalink.gmane.org/gmane.linux.kernel/2120927 [2]: http://permalink.gmane.org/gmane.linux.kernel/2150581 Signed-off-by: Andrzej Hajda Acked-by: Al Viro Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 4f6f94c43412..71025c2f6bbb 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -695,7 +695,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) offset += file->f_pos; case SEEK_SET: /* to avoid userland mistaking f_pos=-9 as -EBADF=-9 */ - if (IS_ERR_VALUE((unsigned long long)offset)) { + if ((unsigned long long)offset >= -MAX_ERRNO) { ret = -EOVERFLOW; break; }