From 5eb22cbcdb849886c2584389faff5afb56c23876 Mon Sep 17 00:00:00 2001
From: Robert Love <rml@novell.com>
Date: Mon, 25 Jul 2005 15:12:19 -0400
Subject: [PATCH] inotify: exit path cleanups

Handle error out paths better.

Signed-off-by: Robert Love <rml@novell.com>
Signed-off-by: John McCutchan <ttb@tentacle.dhs.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
 fs/inotify.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/fs/inotify.c b/fs/inotify.c
index b55d6e4a091..d41c53c8dfd 100644
--- a/fs/inotify.c
+++ b/fs/inotify.c
@@ -865,23 +865,21 @@ asmlinkage long sys_inotify_init(void)
 
 	filp = get_empty_filp();
 	if (!filp) {
-		put_unused_fd(fd);
 		ret = -ENFILE;
-		goto out;
+		goto out_put_fd;
 	}
 
 	user = get_uid(current->user);
-
 	if (unlikely(atomic_read(&user->inotify_devs) >=
 			inotify_max_user_instances)) {
 		ret = -EMFILE;
-		goto out_err;
+		goto out_free_uid;
 	}
 
 	dev = kmalloc(sizeof(struct inotify_device), GFP_KERNEL);
 	if (unlikely(!dev)) {
 		ret = -ENOMEM;
-		goto out_err;
+		goto out_free_uid;
 	}
 
 	filp->f_op = &inotify_fops;
@@ -908,11 +906,11 @@ asmlinkage long sys_inotify_init(void)
 	fd_install(fd, filp);
 
 	return fd;
-out_err:
-	put_unused_fd (fd);
-	put_filp (filp);
+out_free_uid:
 	free_uid(user);
-out:
+	put_filp(filp);
+out_put_fd:
+	put_unused_fd(fd);
 	return ret;
 }
 
@@ -975,9 +973,9 @@ asmlinkage long sys_inotify_add_watch(int fd, const char __user *path, u32 mask)
 	list_add(&watch->i_list, &inode->inotify_watches);
 	ret = watch->wd;
 out:
-	path_release (&nd);
 	up(&dev->sem);
 	up(&inode->inotify_sem);
+	path_release(&nd);
 fput_and_out:
 	fput_light(filp, fput_needed);
 	return ret;
-- 
cgit v1.2.3-70-g09d2