114 lines
3.0 KiB
Diff
114 lines
3.0 KiB
Diff
From 0e3dfb9f705ca78be34cd70fd59d67c431e29cc7 Mon Sep 17 00:00:00 2001
|
|
From: Takashi Iwai <tiwai@suse.de>
|
|
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 <tiwai@suse.de>
|
|
---
|
|
src/pcm/pcm_direct.c | 1 +
|
|
src/pcm/pcm_dmix.c | 2 +-
|
|
src/pcm/pcm_dshare.c | 1 +
|
|
src/pcm/pcm_dsnoop.c | 1 +
|
|
src/pcm/pcm_local.h | 5 +++++
|
|
src/pcm/pcm_shm.c | 1 +
|
|
6 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
|
|
index 040fc1605388..e53e59238119 100644
|
|
--- a/src/pcm/pcm_direct.c
|
|
+++ b/src/pcm/pcm_direct.c
|
|
@@ -19,6 +19,7 @@
|
|
*
|
|
*/
|
|
|
|
+#include "pcm_local.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
|
|
index 7cd3c50841ae..55cae3e79a06 100644
|
|
--- a/src/pcm/pcm_dmix.c
|
|
+++ b/src/pcm/pcm_dmix.c
|
|
@@ -26,7 +26,7 @@
|
|
*
|
|
*/
|
|
|
|
-#include "config.h"
|
|
+#include "pcm_local.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
|
|
index 454b39a91429..c03290985457 100644
|
|
--- a/src/pcm/pcm_dshare.c
|
|
+++ b/src/pcm/pcm_dshare.c
|
|
@@ -26,6 +26,7 @@
|
|
*
|
|
*/
|
|
|
|
+#include "pcm_local.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
|
|
index d3ce300ce3b8..bf67c68a0dfa 100644
|
|
--- a/src/pcm/pcm_dsnoop.c
|
|
+++ b/src/pcm/pcm_dsnoop.c
|
|
@@ -26,6 +26,7 @@
|
|
*
|
|
*/
|
|
|
|
+#include "pcm_local.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h
|
|
index 6a0e71e711ea..152c92c300e1 100644
|
|
--- 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 <stdio.h>
|
|
@@ -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 */
|
|
diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c
|
|
index f0bfd934d335..d9596547741c 100644
|
|
--- a/src/pcm/pcm_shm.c
|
|
+++ b/src/pcm/pcm_shm.c
|
|
@@ -26,6 +26,7 @@
|
|
*
|
|
*/
|
|
|
|
+#include "pcm_local.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
--
|
|
2.35.3
|
|
|