> -----Original Message----- > From: Moni Shoua <monis@xxxxxxxxxxxx> > Sent: Sunday, January 13, 2019 10:57 AM > To: Jason Gunthorpe <jgg@xxxxxxxxxxxx> > Cc: Parav Pandit <parav@xxxxxxxxxxxx>; Leon Romanovsky > <leon@xxxxxxxxxx>; linux-rdma@xxxxxxxxxxxxxxx > Subject: Re: [PATCH for-rc 2/2] IB/mlx5: Fix how advise_mr() launches async > work > > > Ah! I *thought* I checked this, yes, using the system work queue is > > why I added the put_device :) > > > > > It should be done to advise_mr_wq(). This will give chance to flush > > > the wq when IB device is unregistered by the core. > > > > Good question - Moni?? > > > > Jason > Thanks. > Using schedule_work() is obviously a bug. The intention was to use the > advise_mr_wq. I'll send a fix for that. > However, After this will be fixed there is no need to get_device() since it is > assured that no work items will be processed after > mlx5_ib_stage_init_cleanup() finishes. Also you either need to flush the advise_mr_wq or cancel the pending work item when MR is destroyed to make sure that whatever page fault user triggered are canceled. Otherwise a MR can get recycled (dealloc, alloc) (looked up by MR key) for same PD which is page faulting now, which user didn't ask to.