src/pulsecore/memblock.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

New commits:
commit 112a39fa43217ee48922b78e58d69d57579ae893
Author: David Henningsson <david.hennings...@canonical.com>
Date:   Thu Jan 8 13:11:17 2015 +0100

    memblock: Fix more block ID collisions
    
    Since the srb memblock and the audio data were coming from separate
    pools, and the base index was per pool, they could actually still
    collide.
    
    This patch changes the base index to be global and atomically
    incremented.
    
    Reported-by: Arun Raghavan <a...@accosted.net>
    Signed-off-by: David Henningsson <david.hennings...@canonical.com>

diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c
index b781312..d071a5f 100644
--- a/src/pulsecore/memblock.c
+++ b/src/pulsecore/memblock.c
@@ -151,7 +151,6 @@ struct pa_mempool {
     size_t block_size;
     unsigned n_blocks;
     bool is_remote_writable;
-    unsigned export_baseidx;
 
     pa_atomic_t n_init;
 
@@ -1088,6 +1087,8 @@ finish:
 pa_memexport* pa_memexport_new(pa_mempool *p, pa_memexport_revoke_cb_t cb, 
void *userdata) {
     pa_memexport *e;
 
+    static pa_atomic_t export_baseidx = PA_ATOMIC_INIT(0);
+
     pa_assert(p);
     pa_assert(cb);
 
@@ -1106,8 +1107,7 @@ pa_memexport* pa_memexport_new(pa_mempool *p, 
pa_memexport_revoke_cb_t cb, void
     pa_mutex_lock(p->mutex);
 
     PA_LLIST_PREPEND(pa_memexport, p->exports, e);
-    e->baseidx = p->export_baseidx;
-    p->export_baseidx += PA_MEMEXPORT_SLOTS_MAX;
+    e->baseidx = (uint32_t) pa_atomic_add(&export_baseidx, 
PA_MEMEXPORT_SLOTS_MAX);
 
     pa_mutex_unlock(p->mutex);
     return e;

_______________________________________________
pulseaudio-commits mailing list
pulseaudio-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-commits

Reply via email to