fanotify: do not leak user reference on allocation failure
authorEric Paris <eparis@redhat.com>
Wed, 24 Nov 2010 04:48:26 +0000 (23:48 -0500)
committerEric Paris <eparis@redhat.com>
Tue, 7 Dec 2010 21:14:23 +0000 (16:14 -0500)
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>
fs/notify/fanotify/fanotify_user.c

index 01fffe62a2d44ccc4b0ba6ad18d20f9710781a88..ca54957b1f61e986ac2b4793e6be2146607e92eb 100644 (file)
@@ -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 */
        group = fsnotify_alloc_group(&fanotify_fsnotify_ops);
-       if (IS_ERR(group))
+       if (IS_ERR(group)) {
+               free_uid(user);
                return PTR_ERR(group);
+       }
 
        group->fanotify_data.user = user;
        atomic_inc(&user->fanotify_listeners);