https://github.com/alsa-project/alsa-lib/commit/0e3dfb9f705ca78be34cd70fd59d67c431e29cc7 From 0e3dfb9f705ca78be34cd70fd59d67c431e29cc7 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Sat, 9 Sep 2023 17:42:03 +0200 Subject: [PATCH] pcm: Fix segfault with 32bit libs The recent rearrangement of header inclusion order caused a regression showing segfaults on 32bit Arm. The primary reason is the inconsistent compile condition depending on the inclusion of config.h; while most of other code include pcm_local.h (that implicitly includes config.h) at first, pcm_direct.c doesn't do it, hence the access with direct plugins crashes. For fixing it, we need to include config.h at the beginning. But, it's better to include pcm_local.h for all relevant code for consistency. The patch does it, and also it adds the guard in pcm_local.h for double inclusions. Fixes: ad3a8b8b314e ("reshuffle included files to include config.h as first") Link: https://github.com/alsa-project/alsa-lib/issues/352 Signed-off-by: Takashi Iwai --- a/src/pcm/pcm_direct.c +++ b/src/pcm/pcm_direct.c @@ -19,6 +19,7 @@ * */ +#include "pcm_local.h" #include #include #include --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -26,7 +26,7 @@ * */ -#include "config.h" +#include "pcm_local.h" #include #include #include --- a/src/pcm/pcm_dshare.c +++ b/src/pcm/pcm_dshare.c @@ -26,6 +26,7 @@ * */ +#include "pcm_local.h" #include #include #include --- a/src/pcm/pcm_dsnoop.c +++ b/src/pcm/pcm_dsnoop.c @@ -26,6 +26,7 @@ * */ +#include "pcm_local.h" #include #include #include --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -20,6 +20,9 @@ * */ +#ifndef __PCM_LOCAL_H +#define __PCM_LOCAL_H + #include "config.h" #include @@ -1223,3 +1226,5 @@ static inline void snd_pcm_unlock(snd_pcm_t *pcm) #define snd_pcm_lock(pcm) do {} while (0) #define snd_pcm_unlock(pcm) do {} while (0) #endif /* THREAD_SAFE_API */ + +#endif /* __PCM_LOCAL_H */ --- a/src/pcm/pcm_shm.c +++ b/src/pcm/pcm_shm.c @@ -26,6 +26,7 @@ * */ +#include "pcm_local.h" #include #include #include