X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fseq_file.c;h=8bd7097f3cfb60a57bbb02211e2e26f89a4bfb9d;hb=90ad8654ffeb336af8c878fdf7bc72e2ac72467a;hp=5a73e085fb4e53ff52e93ddad93ca6b737dfdb21;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/fs/seq_file.c b/fs/seq_file.c index 5a73e085f..8bd7097f3 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -35,9 +35,6 @@ int seq_open(struct file *file, struct seq_operations *op) sema_init(&p->sem, 1); p->op = op; file->private_data = p; - - /* SEQ files support lseek, but not pread/pwrite */ - file->f_mode &= ~(FMODE_PREAD | FMODE_PWRITE); return 0; } EXPORT_SYMBOL(seq_open); @@ -57,6 +54,9 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) void *p; int err = 0; + if (ppos != &file->f_pos) + return -EPIPE; + down(&m->sem); /* grab buffer if we didn't have one */ if (!m->buf) {