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 indexf2a77eb1b9916..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>