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

Commit e67f85ec authored by Lee A. Roberts's avatar Lee A. Roberts Committed by David S. Miller
Browse files

sctp: fix association hangs due to reneging packets below the cumulative TSN ACK point



In sctp_ulpq_renege_list(), do not renege packets below the
cumulative TSN ACK point.

Signed-off-by: default avatarLee A. Roberts <lee.roberts@hp.com>
Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
parent 70fc69bc
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -969,11 +969,16 @@ static __u16 sctp_ulpq_renege_list(struct sctp_ulpq *ulpq,

	tsnmap = &ulpq->asoc->peer.tsn_map;

	while ((skb = __skb_dequeue_tail(list)) != NULL) {
		freed += skb_headlen(skb);
	while ((skb = skb_peek_tail(list)) != NULL) {
		event = sctp_skb2event(skb);
		tsn = event->tsn;

		/* Don't renege below the Cumulative TSN ACK Point. */
		if (TSN_lte(tsn, sctp_tsnmap_get_ctsn(tsnmap)))
			break;

		__skb_unlink(skb, list);
		freed += skb_headlen(skb);
		sctp_ulpevent_free(event);
		sctp_tsnmap_renege(tsnmap, tsn);
		if (freed >= needed)