Browse Source

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
(cherry picked from commit e2ea393ecc)
mr9.5.5
Richard Fuchs 4 years ago
parent
commit
ce3703c329
1 changed files with 3 additions and 2 deletions
  1. +3
    -2
      kernel-module/xt_RTPENGINE.c

+ 3
- 2
kernel-module/xt_RTPENGINE.c View File

@ -1709,13 +1709,14 @@ 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 long flags;
g = get_target(t, &i->local);
if (!g)
return -ENOENT;
i->ssrc = g->target.ssrc;
spin_lock(&g->ssrc_stats_lock);
spin_lock_irqsave(&g->ssrc_stats_lock, flags);
i->ssrc_stats = g->ssrc_stats;
if (reset) {
@ -1724,7 +1725,7 @@ static int table_get_target_stats(struct rtpengine_table *t, struct rtpengine_st
g->ssrc_stats.total_lost = 0;
}
spin_unlock(&g->ssrc_stats_lock);
spin_unlock_irqrestore(&g->ssrc_stats_lock, flags);
target_put(g);


Loading…
Cancel
Save