There is one major flaw IMO in this code. Please correct me if I'm wrong:
Driver A: powerdomain_register()
Driver B: powerdomain_get()
Driver A: powerdomain_unregister()
Then Driver B has a reference to unregistered domain. And as powerdomains
lack any type of refcounting this can lead to any type of memory access
bugs if Driver A is unloaded from the kernel.
--
With best wishes
Dmitry
--