Skip to content

Commit e67f85e

Browse files
Lee A. Robertsdavem330
authored andcommitted
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: Lee A. Roberts <lee.roberts@hp.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com>
1 parent 70fc69b commit e67f85e

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

net/sctp/ulpqueue.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -969,11 +969,16 @@ static __u16 sctp_ulpq_renege_list(struct sctp_ulpq *ulpq,
969969

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

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

976+
/* Don't renege below the Cumulative TSN ACK Point. */
977+
if (TSN_lte(tsn, sctp_tsnmap_get_ctsn(tsnmap)))
978+
break;
979+
980+
__skb_unlink(skb, list);
981+
freed += skb_headlen(skb);
977982
sctp_ulpevent_free(event);
978983
sctp_tsnmap_renege(tsnmap, tsn);
979984
if (freed >= needed)

0 commit comments

Comments
 (0)