futex: remove duplicate code
PATCH 1/1 futex: remove duplicate code
Hi!
This patch cleans up the error path of futex_fd() by removing duplicate code.
Signed-off-by Pekka Enberg <[email protected]>
---
futex.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-)
kernel/futex.c +9 -12
@@ -673,23 +673,17 @@ static int futex_fd(unsigned long uaddr, 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);
@@ -697,10 +691,8 @@ static int futex_fd(unsigned long uaddr,if (unlikely (err !=0 )) {up_read (¤t->mm->mmap_sem); -put_unused_fd (ret); -put_filp (filp);kfree (q); -return err; + goto error; }/*
@@ -716,6 +708,11 @@ static int futex_fd(unsigned long uaddr,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,