On 21/03/2023 16:16, Dan Carpenter wrote: > On Tue, Mar 21, 2023 at 03:49:19PM +0200, Peter Ujfalusi wrote: >> The patch adding the bytes control support moved the error check outside >> of the list_for_each_entry() which will cause issues when we will have >> support for multiple controls per widgets. > > Even now it causes an issue. We're exiting the list_for_each_entry() > without hitting a break statement so the scontrol points to somewhere > in the middle of the sdev instead of to a valid scontrol entry. > > The scontrol->comp_id will be some garbage value. I'm not sure what you see ret = 0; list_for_each_entry(scontrol, &sdev->kcontrol_list, list) { if (scontrol->comp_id == swidget->comp_id) { switch (scontrol->info_type) { ... } if (ret < 0) { /* scontrol is still valid and not changed */ dev_err(); return ret; } } } I think this is correct, I could have the ret check one level up, but no point of doing it if scontrol->comp_id != swidget->comp_id -- Péter