>From: Nitka, Grzegorz <[email protected]> >Sent: Sunday, June 7, 2026 8:31 PM > >The rollback path in dpll_pin_on_pin_register() called >__dpll_pin_unregister() before dpll_pin_delete_ntf(). When the >unregister dropped the pin's last DPLL reference it cleared the >DPLL_REGISTERED mark in dpll_pin_xa, so the subsequent >dpll_pin_event_send() failed dpll_pin_available() and aborted with >-ENODEV. As a result userspace was never notified of the rollback >deletion and remained out of sync with the kernel. > >Send the delete notification first, matching the order used by >dpll_pin_unregister() and dpll_pin_on_pin_unregister(). > >Fixes: 9d71b54b65b1 ("dpll: netlink: Add DPLL framework base functions") >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 cea7e2be2cbc..80195f3a84f3 100644 >--- a/drivers/dpll/dpll_core.c >+++ b/drivers/dpll/dpll_core.c >@@ -1007,9 +1007,9 @@ int dpll_pin_on_pin_register(struct dpll_pin >*parent, struct dpll_pin *pin, > dpll_unregister: > xa_for_each(&parent->dpll_refs, i, ref) > if (i < stop) { >+ dpll_pin_delete_ntf(pin); > __dpll_pin_unregister(ref->dpll, pin, ops, priv, > parent); >- dpll_pin_delete_ntf(pin);
Hey Grzegorz, Since patch 7/13 this is already part of __dpll_pin_unregister ? The call should be removed at all? Please make sure all calls to __dpll_pin_unregister(..) are aware of that, also maybe better to put this all related to one patch? > } > dpll_xa_ref_pin_del(&pin->parent_refs, parent, ops, priv, pin); > unlock: >-- >2.39.3
