06.01.2022 20:58, Andy Shevchenko пишет: > On Thu, Jan 6, 2022 at 7:40 PM Dmitry Osipenko <digetx@xxxxxxxxx> wrote: >> 05.01.2022 16:22, Hector Martin пишет: >>> On 05/01/2022 07.09, Dmitry Osipenko wrote: > > ... > >>> I'm confused; the array size is constant. What would index contain and >>> why would would brcm_free_alt_fw_paths use it? Just as an iterator >>> variable instead of using a local variable? Or do you mean count? >> >> Yes, use index for the count of active entries in the alt_paths[]. >> >> for (i = 0; i < alt_paths.index; i++) >> kfree(alt_paths.path[i]); >> >> alt_paths.index = 0; >> >> or >> >> while (alt_paths.index) >> kfree(alt_paths.path[--alt_paths.index]); > > Usual pattern is > > while (x--) > kfree(x); > > easier to read, extend (if needed). > That is indeed a usual patter for the driver removal code paths. I didn't like to have index of struct brcmf_fw underflowed, but I see now that fwctx is dynamically created and freed during driver probe, so it should be fine to use that usual pattern here too.