mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-31 22:25:33 -04:00
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 <arun@accosted.net> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
This commit is contained in:
parent
4edc15346b
commit
112a39fa43
1 changed files with 3 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue