>From: Nitka, Grzegorz <[email protected]> >Sent: Sunday, June 7, 2026 8:31 PM > >__dpll_pin_register() emits dpll_pin_create_ntf() internally, but >__dpll_pin_unregister() left the matching delete to its callers. The >counts then diverge on dpll_pin_on_pin_register() rollback and on >dpll_pin_on_pin_unregister(), leaking stale notifications. > >Emit dpll_pin_delete_ntf() inside __dpll_pin_unregister() and drop the >now-redundant call in dpll_pin_unregister(). > >Fixes: 9431063ad323 ("dpll: core: Add DPLL framework base functions")
Reviewed-by: Arkadiusz Kubalewski <[email protected]> >Signed-off-by: Grzegorz Nitka <[email protected]> >--- > drivers/dpll/dpll_core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/drivers/dpll/dpll_core.c b/drivers/dpll/dpll_core.c >index ea45bb41376c..1aaf62775408 100644 >--- a/drivers/dpll/dpll_core.c >+++ b/drivers/dpll/dpll_core.c >@@ -926,6 +926,7 @@ __dpll_pin_unregister(struct dpll_device *dpll, struct >dpll_pin *pin, > const struct dpll_pin_ops *ops, void *priv, void >*cookie) > { > ASSERT_DPLL_PIN_REGISTERED(pin); >+ dpll_pin_delete_ntf(pin); > dpll_xa_ref_pin_del(&dpll->pin_refs, pin, ops, priv, cookie); > dpll_xa_ref_dpll_del(&pin->dpll_refs, dpll, ops, priv, cookie); > if (xa_empty(&pin->dpll_refs)) { >@@ -953,7 +954,6 @@ void dpll_pin_unregister(struct dpll_device *dpll, >struct dpll_pin *pin, > return; > > mutex_lock(&dpll_lock); >- dpll_pin_delete_ntf(pin); > __dpll_pin_unregister(dpll, pin, ops, priv, NULL); > mutex_unlock(&dpll_lock); > } >-- >2.39.3
