From 0b228946a23e716d2d41ac1504376c23c02f1514 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 29 Nov 2012 22:57:33 -0500 Subject: [PATCH] --- yaml --- r: 336177 b: refs/heads/master c: a77cfcb429ed98845a4e4df72473b8f37acd890b h: refs/heads/master i: 336175: d9b5b210353473121b89e0d050d3b127a9056ab5 v: v3 --- [refs] | 2 +- trunk/fs/file.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index f3c7343d7efe..0f373f9374a4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 21d8a15ac333b05f1fecdf9fdc30996be2e11d60 +refs/heads/master: a77cfcb429ed98845a4e4df72473b8f37acd890b diff --git a/trunk/fs/file.c b/trunk/fs/file.c index 7cb71b992603..eff23162485f 100644 --- a/trunk/fs/file.c +++ b/trunk/fs/file.c @@ -994,16 +994,18 @@ int iterate_fd(struct files_struct *files, unsigned n, const void *p) { struct fdtable *fdt; - struct file *file; int res = 0; if (!files) return 0; spin_lock(&files->file_lock); - fdt = files_fdtable(files); - while (!res && n < fdt->max_fds) { - file = rcu_dereference_check_fdtable(files, fdt->fd[n++]); - if (file) - res = f(p, file, n); + for (fdt = files_fdtable(files); n < fdt->max_fds; n++) { + struct file *file; + file = rcu_dereference_check_fdtable(files, fdt->fd[n]); + if (!file) + continue; + res = f(p, file, n); + if (res) + break; } spin_unlock(&files->file_lock); return res;