Re: [PATCH] ocfs2: fix check if list iterator did find an element

From: Dan Carpenter
Date: Mon Mar 21 2022 - 12:23:29 EST


On Mon, Mar 21, 2022 at 04:00:10PM +0000, David Laight wrote:
> From: Dan Carpenter
> > Sent: 21 March 2022 13:55
> > On Mon, Mar 21, 2022 at 02:34:34PM +0100, Jakob Koschel wrote:
> > > >> @@ -556,11 +556,11 @@ static void *lockres_seq_start(struct seq_file *m, loff_t *pos)
> > > >> }
> > > >> }
> > > >>
> > > >> - list_for_each_entry(res, track_list, tracking) {
> > > >> - if (&res->tracking == &dlm->tracking_list)
> > > >> - res = NULL;
> > > >> - else
> > > >> - dlm_lockres_get(res);
> > > >> + list_for_each_entry(iter, track_list, tracking) {
> > > >> + if (&iter->tracking != &dlm->tracking_list) {
> >
> > This is an open coded version of:
> >
> > if (!list_entry_is_head(iter, &dlm->tracking_list, tracking)) {
>
> Doesn't list_for_each_entry() terminate before that happens?
> So this code is probably still horribly broken.

There is ! in the condition. It's just a complicated way of writing
if (!0) { so code works fine, it's just messy.

regards,
dan carpenter