Re: [RFC 8/9] PCI/pwrctl: add PCI power control core code

From: Bartosz Golaszewski
Date: Wed Feb 14 2024 - 10:46:52 EST


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]