diff --git a/[refs] b/[refs] index 0ca1fe44d27a..f5cad395d8ca 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c9a816c0ecb8cef8e6573a8eab47fc48c765e0a1 +refs/heads/master: c44ed965be7a84afaa07543c04eb97a5dfe93422 diff --git a/trunk/fs/compat.c b/trunk/fs/compat.c index f6fd0a00e6cc..691c3fd8ce1d 100644 --- a/trunk/fs/compat.c +++ b/trunk/fs/compat.c @@ -1228,7 +1228,9 @@ compat_sys_preadv(unsigned long fd, const struct compat_iovec __user *vec, file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_readv(file, vec, vlen, &pos); + ret = -ESPIPE; + if (file->f_mode & FMODE_PREAD) + ret = compat_readv(file, vec, vlen, &pos); fput_light(file, fput_needed); return ret; } @@ -1285,7 +1287,9 @@ compat_sys_pwritev(unsigned long fd, const struct compat_iovec __user *vec, file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_writev(file, vec, vlen, &pos); + ret = -ESPIPE; + if (file->f_mode & FMODE_PWRITE) + ret = compat_writev(file, vec, vlen, &pos); fput_light(file, fput_needed); return ret; }