diff options
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/exec.c b/fs/exec.c index 1ebf6e5a521d..fc281b738a98 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -908,14 +908,14 @@ int kernel_read_file(struct file *file, void **buf, loff_t *size,  		goto out;  	i_size = i_size_read(file_inode(file)); -	if (max_size > 0 && i_size > max_size) { -		ret = -EFBIG; -		goto out; -	}  	if (i_size <= 0) {  		ret = -EINVAL;  		goto out;  	} +	if (i_size > SIZE_MAX || (max_size > 0 && i_size > max_size)) { +		ret = -EFBIG; +		goto out; +	}  	if (id != READING_FIRMWARE_PREALLOC_BUFFER)  		*buf = vmalloc(i_size);  |