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