On Sun, Mar 27, 2022 at 10:55:46AM +0300, Leon Romanovsky wrote: > From: Aharon Landau <aharonl@xxxxxxxxxx> > > Don't remove MRs from the cache if need to delay the removal. > > Fixes: b9358bdbc713 ("RDMA/mlx5: Fix locking in MR cache work queue") > Signed-off-by: Aharon Landau <aharonl@xxxxxxxxxx> > Reviewed-by: Shay Drory <shayd@xxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > --- > drivers/infiniband/hw/mlx5/mr.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c > index 8a87a2f074e4..4a01a0ad7c90 100644 > --- a/drivers/infiniband/hw/mlx5/mr.c > +++ b/drivers/infiniband/hw/mlx5/mr.c > @@ -562,9 +562,10 @@ static void __cache_work_func(struct mlx5_cache_ent *ent) > spin_lock_irq(&ent->lock); > if (ent->disabled) > goto out; > - if (need_delay) > + if (need_delay) { > queue_delayed_work(cache->wq, &ent->dwork, 300 * HZ); > - remove_cache_mr_locked(ent); This is rebase error and remove_cache_mr_locked() shouldn't be removed. diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c index 8a87a2f074e4..fc5bc8ff1c57 100644 --- a/drivers/infiniband/hw/mlx5/mr.c +++ b/drivers/infiniband/hw/mlx5/mr.c @@ -562,8 +562,10 @@ static void __cache_work_func(struct mlx5_cache_ent *ent) spin_lock_irq(&ent->lock); if (ent->disabled) goto out; - if (need_delay) + if (need_delay) { queue_delayed_work(cache->wq, &ent->dwork, 300 * HZ); + goto out; + } remove_cache_mr_locked(ent); queue_adjust_cache_locked(ent); } > + goto out; > + } > queue_adjust_cache_locked(ent); > } > out: > -- > 2.35.1 >