On 05/09/2016 11:04 PM, Lijun Ou wrote: > +static void hns_roce_v1_cq_clean(struct hns_roce_cq *hr_cq, u32 qpn, > + struct hns_roce_srq *srq) > +{ > + spin_lock_irq(&hr_cq->lock); > + hns_roce_v1_clean_cq(hr_cq, qpn, srq); > + spin_unlock_irq(&hr_cq->lock); > +}
This is a perfect example of what I was talking about in my last email. The convention here would be to name the main function __hns_roce_v1_cq_clean and the wrapper hns_roce_v1_cq_clean. Instead, you have one named cq_clean and one named clean_cq. Keeping straight which of those locks itself and which needs to be called with the lock held is nigh impossible. -- Doug Ledford <dledf...@redhat.com> GPG KeyID: 0E572FDD
signature.asc
Description: OpenPGP digital signature