summaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorAndré Goddard Rosa <andre.goddard@gmail.com>2010-02-23 04:04:28 -0300
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-01 16:01:21 -0700
commit4b920035104d38462ba289c414c140033287b48c (patch)
treeaf59c2e84c6e6a547f978b9b16ace1277bf3293e /ipc
parent183407c05503edf20fa80ba1410ca5699bbd41f0 (diff)
downloadkernel-crypto-4b920035104d38462ba289c414c140033287b48c.tar.gz
kernel-crypto-4b920035104d38462ba289c414c140033287b48c.tar.xz
kernel-crypto-4b920035104d38462ba289c414c140033287b48c.zip
mqueue: fix mq_open() file descriptor leak on user-space processes
commit 4294a8eedb17bbc45e1e7447c2a4d05332943248 upstream. We leak fd on lookup_one_len() failure Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'ipc')
-rw-r--r--ipc/mqueue.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index c79bd57353e..04985a7256c 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -705,7 +705,7 @@ SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, mode_t, mode,
dentry = lookup_one_len(name, ipc_ns->mq_mnt->mnt_root, strlen(name));
if (IS_ERR(dentry)) {
error = PTR_ERR(dentry);
- goto out_err;
+ goto out_putfd;
}
mntget(ipc_ns->mq_mnt);
@@ -742,7 +742,6 @@ out:
mntput(ipc_ns->mq_mnt);
out_putfd:
put_unused_fd(fd);
-out_err:
fd = error;
out_upsem:
mutex_unlock(&ipc_ns->mq_mnt->mnt_root->d_inode->i_mutex);