On Wed, Dec 12, 2018 at 02:48:38PM +0200, Kamal Heib wrote: > > > 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: > > > > +++ 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 ? Whoops, I missed a step.. Should be fixed soon. Jason