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.