[alsa-devel] ALSA core info race condition

b_lkasam at codeaurora.org b_lkasam at codeaurora.org
Tue Jun 27 21:12:18 CEST 2017


hi ALSA team,
there is a race condition in below API when accessing list API.

In file sound/core/info.c:

Added below patch to avoid list access of same parent node
by two threads at same time causing list_debug crash.

diff --git a/sound/core/info.c b/sound/core/info.c
index b5158b5..c1fd671 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -747,8 +747,11 @@ snd_info_create_entry(const char *name, struct 
snd_info_entry *parent)
  	INIT_LIST_HEAD(&entry->children);
  	INIT_LIST_HEAD(&entry->list);
  	entry->parent = parent;
-	if (parent)
+	if (parent) {
+		mutex_lock(&parent->access);
  		list_add_tail(&entry->list, &parent->children);
+		mutex_unlock(&parent->access);
+	}
  	return entry;
  }

Please check above logic looks fine, and help comment accordingly.


Thanks
Kasam


More information about the Alsa-devel mailing list