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

Commit f9b68102 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "inet: inet_twsk_deschedule factorization"

parents 183346e0 f9f5f0d7
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ void __inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk,
			   struct inet_hashinfo *hashinfo);
			   struct inet_hashinfo *hashinfo);


void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo);
void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo);
void inet_twsk_deschedule(struct inet_timewait_sock *tw);
void inet_twsk_deschedule_put(struct inet_timewait_sock *tw);


void inet_twsk_purge(struct inet_hashinfo *hashinfo,
void inet_twsk_purge(struct inet_hashinfo *hashinfo,
		     struct inet_timewait_death_row *twdr, int family);
		     struct inet_timewait_death_row *twdr, int family);
+3 −6
Original line number Original line Diff line number Diff line
@@ -379,8 +379,7 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row,
		*twp = tw;
		*twp = tw;
	} else if (tw) {
	} else if (tw) {
		/* Silly. Should hash-dance instead... */
		/* Silly. Should hash-dance instead... */
		inet_twsk_deschedule(tw);
		inet_twsk_deschedule_put(tw);
		inet_twsk_put(tw);
	}
	}
	return 0;
	return 0;


@@ -550,10 +549,8 @@ ok:
			inet_twsk_bind_unhash(tw, hinfo);
			inet_twsk_bind_unhash(tw, hinfo);
		spin_unlock(&head->lock);
		spin_unlock(&head->lock);


		if (tw) {
		if (tw)
			inet_twsk_deschedule(tw);
			inet_twsk_deschedule_put(tw);
			inet_twsk_put(tw);
		}


		ret = 0;
		ret = 0;
		goto out;
		goto out;
+8 −5
Original line number Original line Diff line number Diff line
@@ -205,13 +205,17 @@ EXPORT_SYMBOL_GPL(inet_twsk_alloc);
 * tcp_input.c to verify this.
 * tcp_input.c to verify this.
 */
 */


/* This is for handling early-kills of TIME_WAIT sockets. */
/* This is for handling early-kills of TIME_WAIT sockets.
void inet_twsk_deschedule(struct inet_timewait_sock *tw)
 * Warning : consume reference.
 * Caller should not access tw anymore.
 */
void inet_twsk_deschedule_put(struct inet_timewait_sock *tw)
{
{
	if (del_timer_sync(&tw->tw_timer))
	if (del_timer_sync(&tw->tw_timer))
		inet_twsk_kill(tw);
		inet_twsk_kill(tw);
	inet_twsk_put(tw);
}
}
EXPORT_SYMBOL(inet_twsk_deschedule);
EXPORT_SYMBOL(inet_twsk_deschedule_put);


void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo)
void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo)
{
{
@@ -281,9 +285,8 @@ restart:


			rcu_read_unlock();
			rcu_read_unlock();
			local_bh_disable();
			local_bh_disable();
			inet_twsk_deschedule(tw);
			inet_twsk_deschedule_put(tw);
			local_bh_enable();
			local_bh_enable();
			inet_twsk_put(tw);
			goto restart_rcu;
			goto restart_rcu;
		}
		}
		/* If the nulls value we got at the end of this lookup is
		/* If the nulls value we got at the end of this lookup is
+1 −2
Original line number Original line Diff line number Diff line
@@ -1730,8 +1730,7 @@ do_time_wait:
							iph->daddr, th->dest,
							iph->daddr, th->dest,
							inet_iif(skb));
							inet_iif(skb));
		if (sk2) {
		if (sk2) {
			inet_twsk_deschedule(inet_twsk(sk));
			inet_twsk_deschedule_put(inet_twsk(sk));
			inet_twsk_put(inet_twsk(sk));
			sk = sk2;
			sk = sk2;
			goto process;
			goto process;
		}
		}
+2 −4
Original line number Original line Diff line number Diff line
@@ -127,8 +127,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
		if (!th->fin ||
		if (!th->fin ||
		    TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) {
		    TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) {
kill_with_rst:
kill_with_rst:
			inet_twsk_deschedule(tw);
			inet_twsk_deschedule_put(tw);
			inet_twsk_put(tw);
			return TCP_TW_RST;
			return TCP_TW_RST;
		}
		}


@@ -178,8 +177,7 @@ kill_with_rst:
			 */
			 */
			if (sysctl_tcp_rfc1337 == 0) {
			if (sysctl_tcp_rfc1337 == 0) {
kill:
kill:
				inet_twsk_deschedule(tw);
				inet_twsk_deschedule_put(tw);
				inet_twsk_put(tw);
				return TCP_TW_SUCCESS;
				return TCP_TW_SUCCESS;
			}
			}
		}
		}
Loading