File alsa-Don-t-try-to-use-ELD-controls-with-UCM.patch of Package pulseaudio.3768
From 82ec47898e77dca94a7d73e976363f745081d828 Mon Sep 17 00:00:00 2001
From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
Date: Sat, 7 Feb 2015 00:15:34 +0200
Subject: [PATCH] alsa: Don't try to use ELD controls with UCM
This fixes a crash that occurred when trying to access non-existent
port data. Doing this:
pa_alsa_port_data *data = PA_DEVICE_PORT_DATA(port);
is not a good idea when using UCM, because in the UCM mode ports don't
have any data, so the data pointer points to some random memory.
---
src/modules/alsa/module-alsa-card.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -445,6 +445,12 @@ static void init_eld_ctls(struct userdat
if (!u->hctl_handle)
return;
+ /* The code in this function expects ports to have a pa_alsa_port_data
+ * struct as their data, but in UCM mode ports don't have any data. Hence,
+ * the ELD controls can't currently be used in UCM mode. */
+ if (u->use_ucm)
+ return;
+
PA_HASHMAP_FOREACH(port, u->card->ports, state) {
pa_alsa_port_data *data = PA_DEVICE_PORT_DATA(port);
snd_hctl_elem_t* hctl_elem;