mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] fs/file.c: tidy up close_files
@ 2015-10-08 18:08 Mateusz Guzik
  2015-10-08 19:08 ` kbuild test robot
  0 siblings, 1 reply; 2+ messages in thread
From: Mateusz Guzik @ 2015-10-08 18:08 UTC (permalink / raw)
  To: Alexander Viro; +Cc: linux-fsdevel, linux-kernel, Eric Dumazet

Improve consistency by reorganizing the code to use the same constructs
as do_close_on_exec.

Get rid of xchg of the file pointer. Since the table is about to be
freed there is no reason to NULLify the slot.

Get rid of the file NULL check. At this stage a bit set is supposed to
guarantee the slot is populated.

Signed-off-by: Mateusz Guzik <mguzik@redhat.com>
---
 fs/file.c | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/fs/file.c b/fs/file.c
index 6c672ad..103d931 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -365,7 +365,7 @@ out:
 	return NULL;
 }
 
-static struct fdtable *close_files(struct files_struct * files)
+static struct fdtable *close_files(struct files_struct *files)
 {
 	/*
 	 * It is safe to dereference the fd table without RCU or
@@ -373,24 +373,19 @@ static struct fdtable *close_files(struct files_struct * files)
 	 * files structure.
 	 */
 	struct fdtable *fdt = rcu_dereference_raw(files->fdt);
-	int i, j = 0;
+	unsigned i;
 
-	for (;;) {
+	for (i = 0; ; i++) {
 		unsigned long set;
-		i = j * BITS_PER_LONG;
-		if (i >= fdt->max_fds)
+		unsigned fd = i * BITS_PER_LONG;
+		if (fd >= fdt->max_fds)
 			break;
-		set = fdt->open_fds[j++];
-		while (set) {
-			if (set & 1) {
-				struct file * file = xchg(&fdt->fd[i], NULL);
-				if (file) {
-					filp_close(file, files);
-					cond_resched_rcu_qs();
-				}
-			}
-			i++;
-			set >>= 1;
+		set = fdt->open_fds[i];
+		for ( ; set ; fd++, set >>= 1) {
+			if (!(set & 1))
+				continue;
+			filp_close(fdt->fd[fd], files);
+			cond_resched_rcu_qs();
 		}
 	}
 
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-10-08 19:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-08 18:08 [PATCH] fs/file.c: tidy up close_files Mateusz Guzik
2015-10-08 19:08 ` kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®