Browse Source

fanotify: do not leak user reference on allocation failure

If fanotify_init is unable to allocate a new fsnotify group it will
return but will not drop its reference on the associated user struct.
Drop that reference on error.

Reported-by: Vegard Nossum <vegard.nossum@gmail.com>
Signed-off-by: Eric Paris <eparis@redhat.com>
Eric Paris 14 years ago
parent
commit
2637919893
1 changed files with 3 additions and 1 deletions
  1. 3 1
      fs/notify/fanotify/fanotify_user.c

+ 3 - 1
fs/notify/fanotify/fanotify_user.c

@@ -692,8 +692,10 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
 
 
 	/* fsnotify_alloc_group takes a ref.  Dropped in fanotify_release */
 	/* fsnotify_alloc_group takes a ref.  Dropped in fanotify_release */
 	group = fsnotify_alloc_group(&fanotify_fsnotify_ops);
 	group = fsnotify_alloc_group(&fanotify_fsnotify_ops);
-	if (IS_ERR(group))
+	if (IS_ERR(group)) {
+		free_uid(user);
 		return PTR_ERR(group);
 		return PTR_ERR(group);
+	}
 
 
 	group->fanotify_data.user = user;
 	group->fanotify_data.user = user;
 	atomic_inc(&user->fanotify_listeners);
 	atomic_inc(&user->fanotify_listeners);