On 12/12/18 12:54 AM, Jason Gunthorpe wrote: > On Mon, Dec 10, 2018 at 09:09:48PM +0200, Kamal Heib wrote: >> diff --git a/include/rdma/uverbs_ioctl.h b/include/rdma/uverbs_ioctl.h >> index 2f56844fb7da..220dd324f870 100644 >> +++ b/include/rdma/uverbs_ioctl.h >> @@ -419,10 +419,10 @@ struct uapi_definition { >> .kind = UAPI_DEF_IS_SUPPORTED_DEV_FN, \ >> .scope = UAPI_SCOPE_OBJECT, \ >> .needs_fn_offset = \ >> - offsetof(struct ib_device, ibdev_fn) + \ >> + offsetof(struct ib_device_ops, ibdev_fn) + \ >> BUILD_BUG_ON_ZERO( \ >> - sizeof(((struct ib_device *)0)->ibdev_fn) != \ >> - sizeof(void *)), \ >> + sizeof(((struct ib_device_ops *)0)->ibdev_fn) != \ >> + sizeof(void *)), \ >> } >> >> /* >> @@ -434,10 +434,10 @@ struct uapi_definition { >> .kind = UAPI_DEF_IS_SUPPORTED_DEV_FN, \ >> .scope = UAPI_SCOPE_METHOD, \ >> .needs_fn_offset = \ >> - offsetof(struct ib_device, ibdev_fn) + \ >> + offsetof(struct ib_device_ops, ibdev_fn) + \ >> BUILD_BUG_ON_ZERO( \ >> - sizeof(((struct ib_device *)0)->ibdev_fn) != \ >> - sizeof(void *)), \ >> + sizeof(((struct ib_device_ops *)0)->ibdev_fn) != \ >> + sizeof(void *)), \ >> } > > This is wrong, the reader has to be adjusted to make that work: > > --- a/drivers/infiniband/core/uverbs_uapi.c > +++ b/drivers/infiniband/core/uverbs_uapi.c > @@ -300,7 +300,8 @@ static int uapi_merge_def(struct uverbs_api *uapi, struct ib > return 0; > > case UAPI_DEF_IS_SUPPORTED_DEV_FN: { > - void **ibdev_fn = (void *)ibdev + def->needs_fn_offset; > + void **ibdev_fn = > + (void *)(&ibdev->ops) + def->needs_fn_offset; > > I fixed it.. > > Jason > Thanks for fixing that, but for some reason, I don't see it in "rdma/wip/jgg-for-next" branch..., I'm missing something ? Thanks, Kamal