Unverified Commit 4e6d558d authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!13821 tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().

parents 4abe797a 97c85495
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -718,21 +718,31 @@ static bool reqsk_queue_unlink(struct request_sock_queue *queue,
		found = __sk_nulls_del_node_init_rcu(req_to_sk(req));
		spin_unlock(lock);
	}
	if (timer_pending(&req->rsk_timer) && del_timer_sync(&req->rsk_timer))
		reqsk_put(req);

	return found;
}

bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req)
static bool __inet_csk_reqsk_queue_drop(struct sock *sk,
					struct request_sock *req,
					bool from_timer)
{
	bool unlinked = reqsk_queue_unlink(&inet_csk(sk)->icsk_accept_queue, req);

	if (!from_timer && del_timer_sync(&req->rsk_timer))
		reqsk_put(req);

	if (unlinked) {
		reqsk_queue_removed(&inet_csk(sk)->icsk_accept_queue, req);
		reqsk_put(req);
	}

	return unlinked;
}

bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req)
{
	return __inet_csk_reqsk_queue_drop(sk, req, false);
}
EXPORT_SYMBOL(inet_csk_reqsk_queue_drop);

void inet_csk_reqsk_queue_drop_and_put(struct sock *sk, struct request_sock *req)
@@ -805,7 +815,8 @@ static void reqsk_timer_handler(struct timer_list *t)
		return;
	}
drop:
	inet_csk_reqsk_queue_drop_and_put(sk_listener, req);
	__inet_csk_reqsk_queue_drop(sk_listener, req, true);
	reqsk_put(req);
}

static void reqsk_queue_hash_req(struct request_sock *req,