[PATCH 06/20] ASoC: Intel: avs: path: Use guard() for mutex & spin locks

From: phucduc . bui

Date: Thu Jun 11 2026 - 08:00:32 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

Clean up the code using guard() for mutex & spin locks.
Merely code refactoring, and no behavior change.

Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/intel/avs/path.c | 39 ++++++++++++--------------------------
1 file changed, 12 insertions(+), 27 deletions(-)

diff --git a/sound/soc/intel/avs/path.c b/sound/soc/intel/avs/path.c
index 2291f9728a54..4f78df93a24d 100644
--- a/sound/soc/intel/avs/path.c
+++ b/sound/soc/intel/avs/path.c
@@ -69,16 +69,13 @@ avs_path_find_path(struct avs_dev *adev, const char *name, u32 template_id)
if (!template)
return NULL;

- spin_lock(&adev->path_list_lock);
+ guard(spinlock)(&adev->path_list_lock);
/* Only one variant of given path template may be instantiated at a time. */
list_for_each_entry(path, &adev->path_list, node) {
- if (path->template->owner == template) {
- spin_unlock(&adev->path_list_lock);
+ if (path->template->owner == template)
return path;
- }
}

- spin_unlock(&adev->path_list_lock);
return NULL;
}

@@ -1121,9 +1118,8 @@ static int avs_path_init(struct avs_dev *adev, struct avs_path *path,
list_add_tail(&ppl->node, &path->ppl_list);
}

- spin_lock(&adev->path_list_lock);
- list_add_tail(&path->node, &adev->path_list);
- spin_unlock(&adev->path_list_lock);
+ scoped_guard(spinlock, &adev->path_list_lock)
+ list_add_tail(&path->node, &adev->path_list);

return 0;
}
@@ -1157,9 +1153,8 @@ static void avs_path_free_unlocked(struct avs_path *path)
{
struct avs_path_pipeline *ppl, *save;

- spin_lock(&path->owner->path_list_lock);
- list_del(&path->node);
- spin_unlock(&path->owner->path_list_lock);
+ scoped_guard(spinlock, &path->owner->path_list_lock)
+ list_del(&path->node);

list_for_each_entry_safe(ppl, save, &path->ppl_list, node)
avs_path_pipeline_free(path->owner, ppl);
@@ -1305,7 +1300,7 @@ void avs_path_free(struct avs_path *path)
struct avs_path *cpath, *csave;
struct avs_dev *adev = path->owner;

- mutex_lock(&adev->path_mutex);
+ guard(mutex)(&adev->path_mutex);

/* Free all condpaths this path spawned. */
list_for_each_entry_safe(cpath, csave, &path->source_list, source_node)
@@ -1314,8 +1309,6 @@ void avs_path_free(struct avs_path *path)
avs_condpath_free(path->owner, cpath);

avs_path_free_unlocked(path);
-
- mutex_unlock(&adev->path_mutex);
}

struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
@@ -1334,13 +1327,13 @@ struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
}

/* Serialize path and its components creation. */
- mutex_lock(&adev->path_mutex);
+ guard(mutex)(&adev->path_mutex);
/* Satisfy needs of avs_path_find_tplg(). */
- mutex_lock(&adev->comp_list_mutex);
+ guard(mutex)(&adev->comp_list_mutex);

path = avs_path_create_unlocked(adev, dma_id, variant);
if (IS_ERR(path))
- goto exit;
+ return path;

ret = avs_condpaths_walk_all(adev, path);
if (ret) {
@@ -1348,10 +1341,6 @@ struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
path = ERR_PTR(ret);
}

-exit:
- mutex_unlock(&adev->comp_list_mutex);
- mutex_unlock(&adev->path_mutex);
-
return path;
}

@@ -1496,15 +1485,13 @@ static void avs_condpaths_pause(struct avs_dev *adev, struct avs_path *path)
{
struct avs_path *cpath;

- mutex_lock(&adev->path_mutex);
+ guard(mutex)(&adev->path_mutex);

/* If either source or sink stops, so do the attached conditional paths. */
list_for_each_entry(cpath, &path->source_list, source_node)
avs_condpath_pause(adev, cpath);
list_for_each_entry(cpath, &path->sink_list, sink_node)
avs_condpath_pause(adev, cpath);
-
- mutex_unlock(&adev->path_mutex);
}

int avs_path_pause(struct avs_path *path)
@@ -1560,7 +1547,7 @@ static void avs_condpaths_run(struct avs_dev *adev, struct avs_path *path, int t
{
struct avs_path *cpath;

- mutex_lock(&adev->path_mutex);
+ guard(mutex)(&adev->path_mutex);

/* Run conditional paths only if source and sink are both running. */
list_for_each_entry(cpath, &path->source_list, source_node)
@@ -1572,8 +1559,6 @@ static void avs_condpaths_run(struct avs_dev *adev, struct avs_path *path, int t
if (cpath->source->state == AVS_PPL_STATE_RUNNING &&
cpath->sink->state == AVS_PPL_STATE_RUNNING)
avs_condpath_run(adev, cpath, trigger);
-
- mutex_unlock(&adev->path_mutex);
}

int avs_path_run(struct avs_path *path, int trigger)
--
2.43.0