X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Fseq_file.c;h=253a33b8c57aab587b9577ac89759005ea14f527;hb=0d3ab011f8b0c48bdd3f573cb15ceb492ded4d5d;hp=05d6b0e78c959a341137c97fbb2ea2fa89b25197;hpb=b7e03ec9a6b9d0c0cb1e435026d46dfcd78e48ac;p=pandora-kernel.git diff --git a/fs/seq_file.c b/fs/seq_file.c index 05d6b0e78c95..253a33b8c57a 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -184,8 +184,10 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) size -= n; buf += n; copied += n; - if (!m->count) + if (!m->count) { + m->from = 0; m->index++; + } if (!size) goto Done; } @@ -449,8 +451,6 @@ EXPORT_SYMBOL(seq_path); /* * Same as seq_path, but relative to supplied root. - * - * root may be changed, see __d_path(). */ int seq_path_root(struct seq_file *m, struct path *path, struct path *root, char *esc) @@ -463,6 +463,8 @@ int seq_path_root(struct seq_file *m, struct path *path, struct path *root, char *p; p = __d_path(path, root, buf, size); + if (!p) + return SEQ_SKIP; res = PTR_ERR(p); if (!IS_ERR(p)) { char *end = mangle_path(buf, p, esc); @@ -474,7 +476,7 @@ int seq_path_root(struct seq_file *m, struct path *path, struct path *root, } seq_commit(m, res); - return res < 0 ? res : 0; + return res < 0 && res != -ENAMETOOLONG ? res : 0; } /*