diff --git a/fs/exec.c b/fs/exec.c index 319a1f5732fa..482a8b4f41a5 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -994,7 +994,7 @@ int kernel_read_file_from_fd(int fd, void **buf, loff_t *size, loff_t max_size, struct fd f = fdget(fd); int ret = -EBADF; - if (!f.file) + if (!f.file || !(f.file->f_mode & FMODE_READ)) goto out; ret = kernel_read_file(f.file, buf, size, max_size, id);