On Thu, Oct 22, 2020 at 03:15:55PM +0300, Gal Pressman wrote: > On 22/10/2020 15:12, Gal Pressman wrote: > > On 22/10/2020 15:10, Jason Gunthorpe wrote: > >> On Thu, Oct 22, 2020 at 02:21:00PM +0300, Leon Romanovsky wrote: > >>> On Thu, Oct 22, 2020 at 01:58:29PM +0300, Gal Pressman wrote: > >>>> Hi all, > >>>> > >>>> The new IOCTL query GID API 9f85cbe50aa0 ("RDMA/uverbs: Expose the new GID query > >>>> API to user space") currently breaks EFA, as ibv_query_gid() no longer works. > >>>> > >>>> The problem is that the IOCTL call checks for: > >>>> if (!rdma_ib_or_roce(ib_dev, port_num)) > >>>> return -EOPNOTSUPP; > >>>> > >>>> EFA is neither of these, but it uses GIDs. > >>>> > >>>> Any objections to remove the check? Any other solutions come to mind? > >>> > >>> We added this check to protect access to rdma_get_gid_attr() for devices > >>> without GID table. > >>> 1234 table = rdma_gid_table(device, port_num); > >>> 1235 if (index < 0 || index >= table->sz) > >>> 1236 return ERR_PTR(-EINVAL); > >>> > >>> So you can extend that function to return for table == NULL an error and > >>> remove rdma_ib_or_roce() > >> > >> How does table == NULL ever? > > > > A driver with gid_tbl_len == 0 would make the allocation return NULL, no? > > Nevermind, we don't really allocate with gid_tbl_len as the size, and any > allocation failure will fail ib_register_device(). > So I guess there is no way for it to be NULL. I think so too. Thanks