sctp: fix FCFS stream scheduler
Reported by: syzbot+c6793f0f0ce698bce230@syzkaller.appspotmail.com MFC after: 1 week
This commit is contained in:
parent
d7770a5495
commit
e19d93b19d
@ -809,23 +809,22 @@ sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc,
|
||||
|
||||
static void
|
||||
sctp_ss_fcfs_clear(struct sctp_tcb *stcb, struct sctp_association *asoc,
|
||||
int clear_values, int holds_lock)
|
||||
int clear_values SCTP_UNUSED, int holds_lock)
|
||||
{
|
||||
struct sctp_stream_queue_pending *sp;
|
||||
|
||||
if (clear_values) {
|
||||
if (holds_lock == 0) {
|
||||
SCTP_TCB_SEND_LOCK(stcb);
|
||||
}
|
||||
while (!TAILQ_EMPTY(&asoc->ss_data.out.list)) {
|
||||
sp = TAILQ_FIRST(&asoc->ss_data.out.list);
|
||||
TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next);
|
||||
sp->ss_next.tqe_next = NULL;
|
||||
sp->ss_next.tqe_prev = NULL;
|
||||
}
|
||||
if (holds_lock == 0) {
|
||||
SCTP_TCB_SEND_UNLOCK(stcb);
|
||||
}
|
||||
if (holds_lock == 0) {
|
||||
SCTP_TCB_SEND_LOCK(stcb);
|
||||
}
|
||||
while (!TAILQ_EMPTY(&asoc->ss_data.out.list)) {
|
||||
sp = TAILQ_FIRST(&asoc->ss_data.out.list);
|
||||
TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next);
|
||||
sp->ss_next.tqe_next = NULL;
|
||||
sp->ss_next.tqe_prev = NULL;
|
||||
}
|
||||
asoc->ss_data.last_out_stream = NULL;
|
||||
if (holds_lock == 0) {
|
||||
SCTP_TCB_SEND_UNLOCK(stcb);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user