Messages in this thread | | | Subject | Re: [PATCH RESEND] infiniband:core:Add needed error path in cm_init_av_by_path | From | Michael Wang <> | Date | Thu, 17 Dec 2015 09:43:43 +0100 |
| |
On 12/16/2015 07:16 PM, Jason Gunthorpe wrote: > On Wed, Dec 16, 2015 at 11:26:39AM +0100, Michael Wang wrote: [snip] >> >> I've rechecked the ib_init_ah_from_path() again, and found it >> still set IB_AH_GRH when the GID cache missing, but with: > > How do you mean? > > ah_attr->ah_flags = IB_AH_GRH; > ah_attr->grh.dgid = rec->dgid; > > ret = ib_find_cached_gid(device, &rec->sgid, ndev, &port_num, > &gid_index); > if (ret) { > if (ndev) > dev_put(ndev); > return ret; > } > > If find_cached_gid fails then ib_init_ah_from_path also fails. > > Is there a case where ib_find_cached_gid can succeed but not return > good data?
Just for the GRH header, ib_find_cached_gid() will failed but the flag and dgid will be correct, and others are all 0 including hop limit, but may be just coincidence...
As long as hop_limit > 1 means the pkg do have to pass through a router to other subnet, the fix make sense :-)
Regards, Michael Wang
> > I agree it would read nicer if the ah_flags and gr.dgid was moved > after the ib_find_cached_gid > >> BTW, cma_sidr_rep_handler() also call ib_init_ah_from_path() with out >> a check on return. > > That sounds like a problem. > > Jason >
| |