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 Jason