On Thu, May 27, 2021 at 01:08:37PM +0000, Marciniszyn, Mike wrote: > > +++ b/drivers/infiniband/hw/hfi1/verbs.c > > @@ -534,7 +534,8 @@ static inline void hfi1_handle_packet(struct > > hfi1_packet *packet, > > * Notify rvt_multicast_detach() if it is waiting for us > > * to finish. > > */ > > - if (atomic_dec_return(&mcast->refcount) <= 1) > > + refcount_dec(&mcast->refcount); > > + if (refcount_read(&mcast->refcount) <= 1) > > wake_up(&mcast->wait); > > Is there refcount_ that preserves the atomic characteristics of the single call? You are supposed to us refcount_dec_and_test() for patterns like this, this hunk looks wrong to me Jason