* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
@ 2022-07-07 10:52 ` Greg Kroah-Hartman
2022-07-07 10:56 ` Dan Carpenter
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2022-07-07 10:52 UTC (permalink / raw)
To: Karthik Alapati
Cc: Johan Hovold, Alex Elder, Shuah Khan, greybus-dev, linux-staging,
linux-kernel
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
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
2022-07-07 10:52 ` Greg Kroah-Hartman
@ 2022-07-07 10:56 ` Dan Carpenter
2022-07-07 17:45 ` kernel test robot
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dan Carpenter @ 2022-07-07 10:56 UTC (permalink / raw)
To: Karthik Alapati
Cc: Johan Hovold, Alex Elder, Greg Kroah-Hartman, Shuah Khan,
greybus-dev, linux-staging, linux-kernel
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.
>
> Currently, When the condition (w->dapm != dapm) is true the loop continues
> and when it is not then it compares the name strings and breaks out of the
> loop if they match with w pointing to the right entry and it also breaks
> out of loop if they didn't match by additionally setting w to NULL. But
> what if the condition (w->dapm != dapm) is never false and the list
> traversal completes with w pointing to last entry then usage of it after
> the iter may not be correct. And there is no way to know whether the entry
> is found. So, if we introduce w_found to track when the entry is found
> then we can account for the case where the entry is not actually found and
> the list traversal completes.
>
> Fixes coccinelle error:
> drivers/staging/greybus/audio_helper.c:135:7-8: ERROR:
> invalid reference to the index variable of the iterator on line 127
>
> Signed-off-by: Karthik Alapati <mail@karthek.com>
> ---
Already fixed a month ago. Please always work against staging-next or
linux-next.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
2022-07-07 10:52 ` Greg Kroah-Hartman
2022-07-07 10:56 ` Dan Carpenter
@ 2022-07-07 17:45 ` kernel test robot
2022-07-07 17:53 ` Greg Kroah-Hartman
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-07-07 17:45 UTC (permalink / raw)
To: Karthik Alapati, Johan Hovold, Alex Elder, Greg Kroah-Hartman
Cc: kbuild-all, Shuah Khan, greybus-dev, linux-staging, linux-kernel
Hi Karthik,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on v5.19-rc5]
[also build test WARNING on linus/master]
[cannot apply to staging/staging-testing next-20220707]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
base: 88084a3df1672e131ddc1b4e39eeacfd39864acf
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220708/202207080123.R3ePp3SE-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/bc295082ef055003c6018b57d3c56c5aefcb65c5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
git checkout bc295082ef055003c6018b57d3c56c5aefcb65c5
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/staging/greybus/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/staging/greybus/audio_helper.c: In function 'gbaudio_dapm_free_controls':
drivers/staging/greybus/audio_helper.c:128:32: error: expected ';' before 'for'
128 | w_found = false
| ^
| ;
>> drivers/staging/greybus/audio_helper.c:119:14: warning: variable 'w_found' set but not used [-Wunused-but-set-variable]
119 | bool w_found = false;
| ^~~~~~~
>> drivers/staging/greybus/audio_helper.c:118:41: warning: unused variable 'next_w' [-Wunused-variable]
118 | struct snd_soc_dapm_widget *w, *next_w;
| ^~~~~~
vim +/w_found +119 drivers/staging/greybus/audio_helper.c
112
113 int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
114 const struct snd_soc_dapm_widget *widget,
115 int num)
116 {
117 int i;
> 118 struct snd_soc_dapm_widget *w, *next_w;
> 119 bool w_found = false;
120 #ifdef CONFIG_DEBUG_FS
121 struct dentry *parent = dapm->debugfs_dapm;
122 struct dentry *debugfs_w = NULL;
123 #endif
124
125 mutex_lock(&dapm->card->dapm_mutex);
126 for (i = 0; i < num; i++) {
127 /* below logic can be optimized to identify widget pointer */
128 w_found = false
129 list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
130 list) {
131 if (w->dapm != dapm)
132 continue;
133 if (!strcmp(w->name, widget->name)) {
134 w_found = true;
135 break;
136 }
137 w = NULL;
138 }
139 if (!w_found) {
140 dev_err(dapm->dev, "%s: widget not found\n",
141 widget->name);
142 widget++;
143 continue;
144 }
145 widget++;
146 #ifdef CONFIG_DEBUG_FS
147 if (!parent)
148 debugfs_w = debugfs_lookup(w->name, parent);
149 debugfs_remove(debugfs_w);
150 debugfs_w = NULL;
151 #endif
152 gbaudio_dapm_free_widget(w);
153 }
154 mutex_unlock(&dapm->card->dapm_mutex);
155 return 0;
156 }
157
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
` (2 preceding siblings ...)
2022-07-07 17:45 ` kernel test robot
@ 2022-07-07 17:53 ` Greg Kroah-Hartman
2022-07-07 21:29 ` kernel test robot
2022-07-08 5:39 ` kernel test robot
5 siblings, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2022-07-07 17:53 UTC (permalink / raw)
To: Karthik Alapati
Cc: Johan Hovold, Alex Elder, Shuah Khan, greybus-dev, linux-staging,
linux-kernel
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.
>
> Currently, When the condition (w->dapm != dapm) is true the loop continues
> and when it is not then it compares the name strings and breaks out of the
> loop if they match with w pointing to the right entry and it also breaks
> out of loop if they didn't match by additionally setting w to NULL. But
> what if the condition (w->dapm != dapm) is never false and the list
> traversal completes with w pointing to last entry then usage of it after
> the iter may not be correct. And there is no way to know whether the entry
> is found. So, if we introduce w_found to track when the entry is found
> then we can account for the case where the entry is not actually found and
> the list traversal completes.
>
> Fixes coccinelle error:
> drivers/staging/greybus/audio_helper.c:135:7-8: ERROR:
> invalid reference to the index variable of the iterator on line 127
>
> Signed-off-by: Karthik Alapati <mail@karthek.com>
Also, always at the very least, test-build your patches to ensure that
they pass that step. This patch fails to build :(
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
` (3 preceding siblings ...)
2022-07-07 17:53 ` Greg Kroah-Hartman
@ 2022-07-07 21:29 ` kernel test robot
2022-07-08 5:39 ` kernel test robot
5 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-07-07 21:29 UTC (permalink / raw)
To: Karthik Alapati, Johan Hovold, Alex Elder, Greg Kroah-Hartman
Cc: kbuild-all, Shuah Khan, greybus-dev, linux-staging, linux-kernel
Hi Karthik,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v5.19-rc5]
[also build test ERROR on linus/master]
[cannot apply to staging/staging-testing next-20220707]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
base: 88084a3df1672e131ddc1b4e39eeacfd39864acf
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220708/202207080535.tr2i6TxR-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/bc295082ef055003c6018b57d3c56c5aefcb65c5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
git checkout bc295082ef055003c6018b57d3c56c5aefcb65c5
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/staging/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/staging/greybus/audio_helper.c: In function 'gbaudio_dapm_free_controls':
>> drivers/staging/greybus/audio_helper.c:128:32: error: expected ';' before 'for'
128 | w_found = false
| ^
| ;
drivers/staging/greybus/audio_helper.c:119:14: warning: variable 'w_found' set but not used [-Wunused-but-set-variable]
119 | bool w_found = false;
| ^~~~~~~
drivers/staging/greybus/audio_helper.c:118:41: warning: unused variable 'next_w' [-Wunused-variable]
118 | struct snd_soc_dapm_widget *w, *next_w;
| ^~~~~~
vim +128 drivers/staging/greybus/audio_helper.c
124
125 mutex_lock(&dapm->card->dapm_mutex);
126 for (i = 0; i < num; i++) {
127 /* below logic can be optimized to identify widget pointer */
> 128 w_found = false
129 list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
130 list) {
131 if (w->dapm != dapm)
132 continue;
133 if (!strcmp(w->name, widget->name)) {
134 w_found = true;
135 break;
136 }
137 w = NULL;
138 }
139 if (!w_found) {
140 dev_err(dapm->dev, "%s: widget not found\n",
141 widget->name);
142 widget++;
143 continue;
144 }
145 widget++;
146 #ifdef CONFIG_DEBUG_FS
147 if (!parent)
148 debugfs_w = debugfs_lookup(w->name, parent);
149 debugfs_remove(debugfs_w);
150 debugfs_w = NULL;
151 #endif
152 gbaudio_dapm_free_widget(w);
153 }
154 mutex_unlock(&dapm->card->dapm_mutex);
155 return 0;
156 }
157
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] staging: greybus: don't use index pointer after iter
2022-07-07 10:29 [PATCH] staging: greybus: don't use index pointer after iter Karthik Alapati
` (4 preceding siblings ...)
2022-07-07 21:29 ` kernel test robot
@ 2022-07-08 5:39 ` kernel test robot
5 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-07-08 5:39 UTC (permalink / raw)
To: Karthik Alapati, Johan Hovold, Alex Elder, Greg Kroah-Hartman
Cc: llvm, kbuild-all, Shuah Khan, greybus-dev, linux-staging,
linux-kernel
Hi Karthik,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v5.19-rc5]
[also build test ERROR on linus/master]
[cannot apply to staging/staging-testing next-20220707]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
base: 88084a3df1672e131ddc1b4e39eeacfd39864acf
config: arm-randconfig-r014-20220707 (https://download.01.org/0day-ci/archive/20220708/202207081340.OdVTd0BF-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 562c3467a6738aa89203f72fc1d1343e5baadf3c)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/bc295082ef055003c6018b57d3c56c5aefcb65c5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Karthik-Alapati/staging-greybus-don-t-use-index-pointer-after-iter/20220707-183311
git checkout bc295082ef055003c6018b57d3c56c5aefcb65c5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/staging/greybus/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/staging/greybus/audio_helper.c:128:18: error: expected ';' after expression
w_found = false
^
;
1 error generated.
vim +128 drivers/staging/greybus/audio_helper.c
124
125 mutex_lock(&dapm->card->dapm_mutex);
126 for (i = 0; i < num; i++) {
127 /* below logic can be optimized to identify widget pointer */
> 128 w_found = false
129 list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
130 list) {
131 if (w->dapm != dapm)
132 continue;
133 if (!strcmp(w->name, widget->name)) {
134 w_found = true;
135 break;
136 }
137 w = NULL;
138 }
139 if (!w_found) {
140 dev_err(dapm->dev, "%s: widget not found\n",
141 widget->name);
142 widget++;
143 continue;
144 }
145 widget++;
146 #ifdef CONFIG_DEBUG_FS
147 if (!parent)
148 debugfs_w = debugfs_lookup(w->name, parent);
149 debugfs_remove(debugfs_w);
150 debugfs_w = NULL;
151 #endif
152 gbaudio_dapm_free_widget(w);
153 }
154 mutex_unlock(&dapm->card->dapm_mutex);
155 return 0;
156 }
157
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 7+ messages in thread