Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42af61b9 authored by Al Viro's avatar Al Viro Committed by Luca Weiss
Browse files

do_epoll_ctl(): clean the failure exits up a bit



commit 52c479697c9b73f628140dcdfcd39ea302d05482 upstream.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b3ce6ca9)
parent 1fc74bd7
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -1948,10 +1948,8 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
			mutex_lock(&epmutex);
			if (is_file_epoll(tf.file)) {
				error = -ELOOP;
				if (ep_loop_check(ep, tf.file) != 0) {
					clear_tfile_check_list();
				if (ep_loop_check(ep, tf.file) != 0)
					goto error_tgt_fput;
				}
			} else {
				get_file(tf.file);
				list_add(&tf.file->f_tfile_llink,
@@ -1980,8 +1978,6 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
			error = ep_insert(ep, &epds, tf.file, fd, full_check);
		} else
			error = -EEXIST;
		if (full_check)
			clear_tfile_check_list();
		break;
	case EPOLL_CTL_DEL:
		if (epi)
@@ -2004,8 +2000,10 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
	mutex_unlock(&ep->mtx);

error_tgt_fput:
	if (full_check)
	if (full_check) {
		clear_tfile_check_list();
		mutex_unlock(&epmutex);
	}

	fdput(tf);
error_fput: