Skip to contentSkip to conversation

staging: greybus: codecs: use dedicated list iterator variable

PATCH In review Jakob Koschel 4 participants 4 messages Mar 21, 2022

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 staging: greybus: codecs: use dedicated list iterator variable

In preparation to limit the scope of the list iterator to the list traversal loop, use a dedicated pointer to point to the found element [1].

---
 drivers/staging/greybus/audio_codec.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)
drivers/staging/greybus/audio_codec.c +12 -8
index b589cf6b1d03..a446d6455fbd 100644
@@ -497,7 +497,7 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
 			   struct snd_soc_dai *dai)
 {
 	int ret;
-	struct gbaudio_module_info *module;
+	struct gbaudio_module_info *module = NULL, *iter;
 	struct gbaudio_data_connection *data;
 	struct gb_bundle *bundle;
 	struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
@@ -511,11 +511,13 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
 		return -ENODEV;
 	}
 
-	list_for_each_entry(module, &codec->module_list, list) {
+	list_for_each_entry(iter, &codec->module_list, list) {
 		/* find the dai */
-		data = find_data(module, dai->id);
-		if (data)
+		data = find_data(iter, dai->id);
+		if (data) {
+			module = iter;
 			break;
+		}
 	}
 	if (!data) {
 		dev_err(dai->dev, "DATA connection missing\n");
@@ -563,7 +565,7 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
 {
 	int ret;
 	struct gbaudio_data_connection *data;
-	struct gbaudio_module_info *module;
+	struct gbaudio_module_info *module = NULL, *iter;
 	struct gb_bundle *bundle;
 	struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
 	struct gbaudio_stream_params *params;
@@ -592,11 +594,13 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
 		return ret;
 	}
 
-	list_for_each_entry(module, &codec->module_list, list) {
+	list_for_each_entry(iter, &codec->module_list, list) {
 		/* find the dai */
-		data = find_data(module, dai->id);
-		if (data)
+		data = find_data(iter, dai->id);
+		if (data) {
+			module = iter;
 			break;
+		}
 	}
 	if (!data) {
 		dev_err(dai->dev, "%s:%s DATA connection missing\n",

base-commit: f443e374ae131c168a065ea1748feac6b2e76613

Signature · 1 line
2.25.1
maintainer Reviewed-by on v1 1/1
#2 lore raw
In reply to Jakob Koschel
Quoted 66 lines · Jakob Koschel

In preparation to limit the scope of the list iterator to the list traversal loop, use a dedicated pointer to point to the found element [1].

---
 drivers/staging/greybus/audio_codec.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)
drivers/staging/greybus/audio_codec.c +12 -8
index b589cf6b1d03..a446d6455fbd 100644
@@ -497,7 +497,7 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
 			   struct snd_soc_dai *dai)
 {
 	int ret;
-	struct gbaudio_module_info *module;
+	struct gbaudio_module_info *module = NULL, *iter;
 	struct gbaudio_data_connection *data;
 	struct gb_bundle *bundle;
 	struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
@@ -511,11 +511,13 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
 		return -ENODEV;
 	}
 
-	list_for_each_entry(module, &codec->module_list, list) {
+	list_for_each_entry(iter, &codec->module_list, list) {
 		/* find the dai */
-		data = find_data(module, dai->id);
-		if (data)
+		data = find_data(iter, dai->id);
+		if (data) {
+			module = iter;
 			break;
+		}
 	}
 	if (!data) {
 		dev_err(dai->dev, "DATA connection missing\n");
@@ -563,7 +565,7 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
 {
 	int ret;
 	struct gbaudio_data_connection *data;
-	struct gbaudio_module_info *module;
+	struct gbaudio_module_info *module = NULL, *iter;
 	struct gb_bundle *bundle;
 	struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
 	struct gbaudio_stream_params *params;
@@ -592,11 +594,13 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
 		return ret;
 	}
 
-	list_for_each_entry(module, &codec->module_list, list) {
+	list_for_each_entry(iter, &codec->module_list, list) {
 		/* find the dai */
-		data = find_data(module, dai->id);
-		if (data)
+		data = find_data(iter, dai->id);
+		if (data) {
+			module = iter;
 			break;
+		}
 	}
 	if (!data) {
 		dev_err(dai->dev, "%s:%s DATA connection missing\n",
Quoted 1 line

base-commit: f443e374ae131c168a065ea1748feac6b2e76613

maintainer Reviewed-by on v1 1/1
#3 lore raw
In reply to Jakob Koschel
Quoted 67 lines · Jakob Koschel

In preparation to limit the scope of the list iterator to the list traversal loop, use a dedicated pointer to point to the found element [1].

---
 drivers/staging/greybus/audio_codec.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)
drivers/staging/greybus/audio_codec.c +12 -8
index b589cf6b1d03..a446d6455fbd 100644
@@ -497,7 +497,7 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
                           struct snd_soc_dai *dai)
 {
        int ret;
-       struct gbaudio_module_info *module;
+       struct gbaudio_module_info *module = NULL, *iter;
        struct gbaudio_data_connection *data;
        struct gb_bundle *bundle;
        struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
@@ -511,11 +511,13 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
                return -ENODEV;
        }
 
-       list_for_each_entry(module, &codec->module_list, list) {
+       list_for_each_entry(iter, &codec->module_list, list) {
                /* find the dai */
-               data = find_data(module, dai->id);
-               if (data)
+               data = find_data(iter, dai->id);
+               if (data) {
+                       module = iter;
                        break;
+               }
        }
        if (!data) {
                dev_err(dai->dev, "DATA connection missing\n");
@@ -563,7 +565,7 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
 {
        int ret;
        struct gbaudio_data_connection *data;
-       struct gbaudio_module_info *module;
+       struct gbaudio_module_info *module = NULL, *iter;
        struct gb_bundle *bundle;
        struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev);
        struct gbaudio_stream_params *params;
@@ -592,11 +594,13 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
                return ret;
        }
 
-       list_for_each_entry(module, &codec->module_list, list) {
+       list_for_each_entry(iter, &codec->module_list, list) {
                /* find the dai */
-               data = find_data(module, dai->id);
-               if (data)
+               data = find_data(iter, dai->id);
+               if (data) {
+                       module = iter;
                        break;
+               }
        }
        if (!data) {
                dev_err(dai->dev, "%s:%s DATA connection missing\n",
Quoted 1 line

base-commit: f443e374ae131c168a065ea1748feac6b2e76613

Thanks for sharing this patch Jakob.

Quoted 3 lines

--
2.25.1