Re: [PATCH v3 10/14] RDMA/ionic: Register device ops for control path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 7/2/25 23:30, Leon Romanovsky wrote:
On Wed, Jul 02, 2025 at 10:18:03AM -0300, Jason Gunthorpe wrote:
On Tue, Jul 01, 2025 at 01:38:44PM +0300, Leon Romanovsky wrote:
+static void ionic_flush_qs(struct ionic_ibdev *dev)
+{
+	struct ionic_qp *qp, *qp_tmp;
+	struct ionic_cq *cq, *cq_tmp;
+	LIST_HEAD(flush_list);
+	unsigned long index;
+
+	/* Flush qp send and recv */
+	rcu_read_lock();
+	xa_for_each(&dev->qp_tbl, index, qp) {
+		kref_get(&qp->qp_kref);
+		list_add_tail(&qp->ibkill_flush_ent, &flush_list);
+	}
+	rcu_read_unlock();
Same question as for CQ. What does RCU lock protect here?
It should protect the kref_get against free of qp. The qp memory must
be RCU freed.
I'm not sure that this was intension here. Let's wait for an answer from the author.

As Jason mentioned, It was intended to protect the kref_get against free of cq and qp
in the destroy path.

But this pattern requires kref_get_unless_zero()

Jason

I will change it for kref_get_unless_zero().

Thanks,
Abhijit





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux