• Xin Long's avatar
    sctp: only update outstanding_bytes for transmitted queue when doing prsctp_prune · d30fc512
    Xin Long authored
    Now outstanding_bytes is only increased when appending chunks into one
    packet and sending it at 1st time, while decreased when it is about to
    move into retransmit queue. It means outstanding_bytes value is already
    decreased for all chunks in retransmit queue.
    
    However sctp_prsctp_prune_sent is a common function to check the chunks
    in both transmitted and retransmit queue, it decrease outstanding_bytes
    when moving a chunk into abandoned queue from either of them.
    
    It could cause outstanding_bytes underflow, as it also decreases it's
    value for the chunks in retransmit queue.
    
    This patch fixes it by only updating outstanding_bytes for transmitted
    queue when pruning queues for prsctp prio policy, the same fix is also
    needed in sctp_check_transmitted.
    
    Fixes: 8dbdf1f5 ("sctp: implement prsctp PRIO policy")
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d30fc512
outqueue.c 55.3 KB