defrag: improve thread safety in config logging

CID 1554235: (#1 of 1): Data race condition (MISSING_LOCK)
missing_lock: Accessing defragtracker_spare_q.len without holding lock DefragTrackerStack_.m. Elsewhere, DefragTrackerStack_.len is written to with DefragTrackerStack_.m held 2 out of 2 times.
pull/13518/head
Victor Julien 1 year ago committed by Victor Julien
parent a472b24d17
commit f332b3e571

@ -275,7 +275,8 @@ void DefragInitConfig(bool quiet)
}
if (!quiet) {
SCLogConfig("preallocated %" PRIu32 " defrag trackers of size %" PRIuMAX "",
defragtracker_spare_q.len, (uintmax_t)sizeof(DefragTracker));
DefragTrackerStackSize(&defragtracker_spare_q),
(uintmax_t)sizeof(DefragTracker));
}
}
}

@ -98,3 +98,15 @@ DefragTracker *DefragTrackerDequeue(DefragTrackerStack *q)
DQLOCK_UNLOCK(q);
return dt;
}
/**
* \brief return stack size
*/
uint32_t DefragTrackerStackSize(DefragTrackerStack *q)
{
uint32_t len;
DQLOCK_LOCK(q);
len = q->len;
DQLOCK_UNLOCK(q);
return len;
}

@ -75,5 +75,6 @@ void DefragTrackerStackDestroy(DefragTrackerStack *);
void DefragTrackerEnqueue(DefragTrackerStack *, DefragTracker *);
DefragTracker *DefragTrackerDequeue(DefragTrackerStack *);
uint32_t DefragTrackerStackSize(DefragTrackerStack *q);
#endif /* SURICATA_DEFRAG_QUEUE_H */

Loading…
Cancel
Save