Thread (25 messages) 25 messages, 6 authors, 2026-02-10

RE: [Intel-wired-lan] [PATCH net-next v2 09/12] dpll: Prevent duplicate registrations

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-19 07:51:03
Also in: intel-wired-lan, linux-devicetree, linux-rdma, lkml

quoted hunk ↗ jump to hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Ivan Vecera
Sent: Friday, January 16, 2026 7:46 PM
To: netdev@vger.kernel.org
Cc: Eric Dumazet <edumazet@google.com>; Nguyen, Anthony L
[off-list ref]; Rob Herring [off-list ref]; Leon
Romanovsky [off-list ref]; Lobakin, Aleksander
[off-list ref]; linux-rdma@vger.kernel.org; Kitszel,
Przemyslaw [off-list ref]; Kubalewski, Arkadiusz
[off-list ref]; intel-wired-lan@lists.osuosl.org;
Jakub Kicinski [off-list ref]; Paolo Abeni [off-list ref];
devicetree@vger.kernel.org; Conor Dooley [off-list ref]; Jiri
Pirko [off-list ref]; Richard Cochran [off-list ref];
Saravana Kannan [off-list ref]; Prathosh Satish
[off-list ref]; Vadim Fedorenko
[off-list ref]; Mark Bloch [off-list ref]; linux-
kernel@vger.kernel.org; Tariq Toukan [off-list ref]; Andrew Lunn
[off-list ref]; Jonathan Lemon [off-list ref];
Krzysztof Kozlowski [off-list ref]; Saeed Mahameed
[off-list ref]; David S. Miller [off-list ref]
Subject: [Intel-wired-lan] [PATCH net-next v2 09/12] dpll: Prevent
duplicate registrations

Modify the internal registration helpers dpll_xa_ref_{dpll,pin}_add()
to reject duplicate registration attempts.

Previously, if a caller attempted to register the same pin multiple
times (with the same ops, priv, and cookie) on the same device, the
core silently increments the reference count and return success. This
behavior is incorrect because if the caller makes these duplicate
registrations then for the first one dpll_pin_registration is
allocated and for others the associated dpll_pin_ref.refcount is
incremented. During the first unregistration the associated
dpll_pin_registration is freed and for others WARN is fired.

Fix this by updating the logic to return `-EEXIST` if a matching
registration is found to enforce a strict "register once" policy.

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
---
 drivers/dpll/dpll_core.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/dpll/dpll_core.c b/drivers/dpll/dpll_core.c index
f2a77eb1b9916..8616d6285c646 100644
--- a/drivers/dpll/dpll_core.c
+++ b/drivers/dpll/dpll_core.c
@@ -161,10 +161,8 @@ dpll_xa_ref_pin_add(struct xarray *xa_pins,
struct dpll_pin *pin,
 		if (ref->pin != pin)
 			continue;
 		reg = dpll_pin_registration_find(ref, ops, priv,
cookie);
-		if (reg) {
-			refcount_inc(&ref->refcount);
-			return 0;
-		}
+		if (reg)
+			return -EEXIST;
 		ref_exists = true;
 		break;
 	}
@@ -244,10 +242,8 @@ dpll_xa_ref_dpll_add(struct xarray *xa_dplls,
struct dpll_device *dpll,
 		if (ref->dpll != dpll)
 			continue;
 		reg = dpll_pin_registration_find(ref, ops, priv,
cookie);
-		if (reg) {
-			refcount_inc(&ref->refcount);
-			return 0;
-		}
+		if (reg)
+			return -EEXIST;
 		ref_exists = true;
 		break;
 	}
--
2.52.0
Reviewed-by: Aleksandr Loktionov <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help