Re: [PATCH] staging: greybus: don't use index pointer after iter
From: Greg Kroah-Hartman
Date: Thu Jul 07 2022 - 06:52:55 EST
On Thu, Jul 07, 2022 at 03:59:54PM +0530, Karthik Alapati wrote:
> There are some usages of index pointer of list(w) which may not point to
> the right entry when the required entry is not found and the list traversal
> completes with index pointer pointing to the last entry. So, use w_found
> flag to track the case where the entry is found.
That is already being done here with the use of the w variable.
Look at commit 80c968a04a38 ("staging: greybus: audio: fix loop cursor
use after iteration") and then d2b47721a100 ("staging: greybus: audio:
replace safe list iteration").
> diff --git a/drivers/staging/greybus/audio_helper.c b/drivers/staging/greybus/audio_helper.c
> index 843760675876..7c04897a22a2 100644
> --- a/drivers/staging/greybus/audio_helper.c
> +++ b/drivers/staging/greybus/audio_helper.c
> @@ -116,6 +116,7 @@ int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
> {
> int i;
> struct snd_soc_dapm_widget *w, *next_w;
> + bool w_found = false;
> #ifdef CONFIG_DEBUG_FS
> struct dentry *parent = dapm->debugfs_dapm;
> struct dentry *debugfs_w = NULL;
> @@ -124,15 +125,18 @@ int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
> mutex_lock(&dapm->card->dapm_mutex);
> for (i = 0; i < num; i++) {
> /* below logic can be optimized to identify widget pointer */
> + w_found = false
> list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
> list) {
You are working off of an old kernel version here, please see the above
commits which do not seem to be in your tree. Always work on linux-next
for issues so that you do not duplicate work that others have completed.
thanks,
greg k-h