From c399869f2bbe13b7487d343782bffd4070e1aea0 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 6 Sep 2005 15:17:44 -0700 Subject: [PATCH] --- yaml --- r: 7395 b: refs/heads/master c: 39ed3fdeec1290dd246dcf1da6b278566987a084 h: refs/heads/master i: 7393: b7796c5b31f081ea5d97c4311e9b729ca05ccca9 7391: f6f16c17ab7a2ecc3a0afd2fdadb614ef21ec2b0 v: v3 --- [refs] | 2 +- trunk/kernel/futex.c | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 325c4892842b..a1c7632d5f70 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 580b2e3c0183818adf6151e60270405b02ea8504 +refs/heads/master: 39ed3fdeec1290dd246dcf1da6b278566987a084 diff --git a/trunk/kernel/futex.c b/trunk/kernel/futex.c index 07ba87de9658..ca05fe6a70b2 100644 --- a/trunk/kernel/futex.c +++ b/trunk/kernel/futex.c @@ -786,23 +786,17 @@ static int futex_fd(unsigned long uaddr, int signal) filp->f_mapping = filp->f_dentry->d_inode->i_mapping; if (signal) { - int err; err = f_setown(filp, current->pid, 1); if (err < 0) { - put_unused_fd(ret); - put_filp(filp); - ret = err; - goto out; + goto error; } filp->f_owner.signum = signal; } q = kmalloc(sizeof(*q), GFP_KERNEL); if (!q) { - put_unused_fd(ret); - put_filp(filp); - ret = -ENOMEM; - goto out; + err = -ENOMEM; + goto error; } down_read(¤t->mm->mmap_sem); @@ -810,10 +804,8 @@ static int futex_fd(unsigned long uaddr, int signal) if (unlikely(err != 0)) { up_read(¤t->mm->mmap_sem); - put_unused_fd(ret); - put_filp(filp); kfree(q); - return err; + goto error; } /* @@ -829,6 +821,11 @@ static int futex_fd(unsigned long uaddr, int signal) fd_install(ret, filp); out: return ret; +error: + put_unused_fd(ret); + put_filp(filp); + ret = err; + goto out; } long do_futex(unsigned long uaddr, int op, int val, unsigned long timeout,