TT#14008 use interrupt-safe lock for ssrc_stats_lock

Despite this code being called from userspace, we must disable
interrupts while having ssrc_stats_lock acquired, as the same lock is
acquired elsewhere from within an interrupt context.

closes #1492

Change-Id: Ia6f31eb876ee98ad355d12f9361cbc068d008608
pull/1498/head
Richard Fuchs 3 years ago
parent 16693a4821
commit 2b7a1a174c

@ -1792,12 +1792,13 @@ static struct re_dest_addr *find_dest_addr(const struct re_dest_addr_hash *h, co
static int table_get_target_stats(struct rtpengine_table *t, struct rtpengine_stats_info *i, int reset) {
struct rtpengine_target *g;
unsigned int u;
unsigned long flags;
g = get_target(t, &i->local);
if (!g)
return -ENOENT;
spin_lock(&g->ssrc_stats_lock);
spin_lock_irqsave(&g->ssrc_stats_lock, flags);
for (u = 0; u < RTPE_NUM_SSRC_TRACKING; u++) {
i->ssrc[u] = g->target.ssrc[u];
@ -1810,7 +1811,7 @@ static int table_get_target_stats(struct rtpengine_table *t, struct rtpengine_st
}
}
spin_unlock(&g->ssrc_stats_lock);
spin_unlock_irqrestore(&g->ssrc_stats_lock, flags);
target_put(g);

Loading…
Cancel
Save