Merge tag 'pull-work.lseek' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[sfrench/cifs-2.6.git] / fs / open.c
index 2790aac66e58e05095d6ce88de2d4edfd521460b..1177e8d1cf832097daeefb325942ca519a230408 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -888,6 +888,8 @@ static int do_dentry_open(struct file *f,
        if ((f->f_mode & FMODE_WRITE) &&
             likely(f->f_op->write || f->f_op->write_iter))
                f->f_mode |= FMODE_CAN_WRITE;
+       if ((f->f_mode & FMODE_LSEEK) && !f->f_op->llseek)
+               f->f_mode &= ~FMODE_LSEEK;
        if (f->f_mapping->a_ops && f->f_mapping->a_ops->direct_IO)
                f->f_mode |= FMODE_CAN_ODIRECT;