On Mon, Feb 28, 2022 at 12:08:22PM +0100, Jakob Koschel wrote: > diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c > index 2a7abf7a1f7f..a069847b56aa 100644 > --- a/drivers/infiniband/hw/hfi1/tid_rdma.c > +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c > @@ -1239,7 +1239,7 @@ static int kern_alloc_tids(struct tid_rdma_flow *flow) > struct hfi1_ctxtdata *rcd = flow->req->rcd; > struct hfi1_devdata *dd = rcd->dd; > u32 ngroups, pageidx = 0; > - struct tid_group *group = NULL, *used; > + struct tid_group *group = NULL, *used, *tmp; > u8 use; > > flow->tnode_cnt = 0; > @@ -1248,13 +1248,15 @@ static int kern_alloc_tids(struct tid_rdma_flow *flow) > goto used_list; > > /* First look at complete groups */ > - list_for_each_entry(group, &rcd->tid_group_list.list, list) { > - kern_add_tid_node(flow, rcd, "complete groups", group, > - group->size); > + list_for_each_entry(tmp, &rcd->tid_group_list.list, list) { > + kern_add_tid_node(flow, rcd, "complete groups", tmp, > + tmp->size); > > - pageidx += group->size; > - if (!--ngroups) > + pageidx += tmp->size; > + if (!--ngroups) { > + group = tmp; > break; > + } > } > > if (pageidx >= flow->npagesets) > @@ -1277,7 +1279,7 @@ static int kern_alloc_tids(struct tid_rdma_flow *flow) > * However, if we are at the head, we have reached the end of the ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > * complete groups list from the first loop above ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > */ Originally this code tested for an open code list_is_head() so the comment made sense, but it's out of date now. Just delete it. > - if (group && &group->list == &rcd->tid_group_list.list) > + if (!group) > goto bail_eagain; > group = list_prepare_entry(group, &rcd->tid_group_list.list, > list); regards, dan carpenter