From: Jaroslav Kysela Date: Thu, 10 Mar 2016 10:06:46 +0000 (+0100) Subject: capmt: another data race fix (clang sanitizer) X-Git-Tag: v4.2.1~901 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f5fcb58f7bbb906ae80020caee5a0d51735441fb;p=thirdparty%2Ftvheadend.git capmt: another data race fix (clang sanitizer) --- diff --git a/src/descrambler/capmt.c b/src/descrambler/capmt.c index 2da49720a..22481d5e7 100644 --- a/src/descrambler/capmt.c +++ b/src/descrambler/capmt.c @@ -988,12 +988,12 @@ capmt_stop_filter(capmt_t *capmt, int adapter, sbuf_t *sb, int offset) demux_index >= MAX_INDEX || filter_index >= MAX_FILTER) return; + pthread_mutex_lock(&capmt->capmt_mutex); cf = &capmt->capmt_demuxes.filters[demux_index]; filter = &cf->dmx[filter_index]; if (filter->pid != pid) - return; + goto end; flags = filter->flags; - pthread_mutex_lock(&capmt->capmt_mutex); memset(filter, 0, sizeof(*filter)); capmt_pid_remove(capmt, adapter, pid, flags); /* short the max values */ @@ -1005,6 +1005,7 @@ capmt_stop_filter(capmt_t *capmt, int adapter, sbuf_t *sb, int offset) while (demux_index != 255 && capmt->capmt_demuxes.filters[demux_index].max == 0) demux_index--; capmt->capmt_demuxes.max = demux_index == 255 ? 0 : demux_index + 1; +end: pthread_mutex_unlock(&capmt->capmt_mutex); }