On Fri, Feb 2, 2024 at 4:53 AM Bjorn Andersson <andersson@xxxxxxxxxx> wrote: > [snip] > > > + break; > > + case BUS_NOTIFY_BOUND_DRIVER: > > + pwrctl->link = device_link_add(dev, pwrctl->dev, > > + DL_FLAG_AUTOREMOVE_CONSUMER); > > + if (!pwrctl->link) > > + dev_err(pwrctl->dev, "Failed to add device link\n"); > > + break; > > + case BUS_NOTIFY_UNBOUND_DRIVER: > > + device_link_del(pwrctl->link); > > This might however become a NULL-pointer dereference, if dev was bound > to its driver before the pci_pwrctl_notify() was registered for the > pwrctl and then the PCI device is unbound. > Right. And it also makes me think that right after registering with the notifier, we should iterate over the PCI bus devices and see if the relevant one is already there. > This would also happen if device_link_add() failed when the PCI device > was bound... > Right. Bart [snip]