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