mirror of
https://github.com/torvalds/linux.git
synced 2024-10-31 09:11:49 +00:00
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>
This commit is contained in:
parent
70fc69bc5a
commit
e67f85ecd8
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user