On Thu, 2019-08-08 at 15:34 +0000, Jason Gunthorpe wrote: > On Thu, Aug 08, 2019 at 06:32:00PM +0300, Yishai Hadas wrote: > > > > diff --git a/drivers/infiniband/hw/mlx5/devx.c > > > > b/drivers/infiniband/hw/mlx5/devx.c > > > > index 2d1b3d9609d9..af5bbb35c058 100644 > > > > +++ b/drivers/infiniband/hw/mlx5/devx.c > > > > @@ -2644,12 +2644,13 @@ static int devx_async_event_close(struct > > > > inode *inode, struct file *filp) > > > > struct devx_async_event_file *ev_file = filp- > > > > >private_data; > > > > > > This line is wrong, it should be > > > > > > struct devx_async_event_file *ev_file = > > > container_of(struct > > > devx_async_event_file, filp- > > > >private_data, uobj); > > > > You suggested the below 2 lines instead of the above one line, > > correct ? as > > struct devx_async_event_file wraps uobj as its first field this is > > logically > > equal, agree ? > > Yes, it is wrong only in the use of the type system, the private_data > void * should only ever be cast to a ib_uobject. > > > struct ib_uobject *uobj = filp->private_data; > > This could be done with a cast > > > > It is also a bit redundant to store the mlx5_ib_dev in the > > > devx_async_event_file as uobj->ucontext->dev is the same pointer. > > > > > Post hot unplug uobj->ucontext might not be accessible, isn't it ? > > Current code should be fine for that. > > That is the other kind of weird thing, all this destruction could be > done on unplug.. > > > Are we fine to take this patch ? > > Yes Thanks, applied to for-rc. -- Doug Ledford GPG KeyID: B826A3330E572FDD Fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD