On Tue, Jun 18, 2019 at 08:26:14PM +0300, Leon Romanovsky wrote: > +static void __rdma_counter_dealloc(struct rdma_counter *counter) > +{ > + mutex_lock(&counter->lock); > + counter->device->ops.counter_dealloc(counter); > + mutex_unlock(&counter->lock); > +} Does this lock do anything? The kref is 0 at this point, so no other thread can have a pointer to this lock. > + > +static void rdma_counter_dealloc(struct rdma_counter *counter) > +{ > + if (!counter) > + return; Counter is never NULL. Jason