From e5af757e99c735211d495b0d9bb5a6ebd05089e8 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 13 Mar 2011 23:24:46 +0000 Subject: [PATCH] --- yaml --- r: 234099 b: refs/heads/master c: c44ed965be7a84afaa07543c04eb97a5dfe93422 h: refs/heads/master i: 234097: e37b52cc713b0c644a13e47fa302a46a045f8785 234095: ae55611582c83478eedda9a7ff315ea277a509e9 v: v3 --- [refs] | 2 +- trunk/fs/compat.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) 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; }