On Sun, Oct 01, 2023 at 07:02:52PM +0200, Uwe Kleine-König wrote: > With CONFIG_PCIE_KIRIN=y and kirin_pcie_remove() marked with __exit, the > function is discarded from the driver. In this case a bound device can > still get unbound, e.g via sysfs. Then no cleanup code is run resulting > in resource leaks or worse. kirin_pcie_driver sets .suppress_bind_attrs = true. Doesn't that mean that we can't unbind a device via sysfs in this case? I don't expect modpost to know about .suppress_bind_attrs, so maybe we should remove the __exit annotation even if it would be safe to keep it in this case. It's a tiny function anyway. > The right thing to do is do always have the remove callback available. > This fixes the following warning by modpost: > > drivers/pci/controller/dwc/pcie-kirin: section mismatch in reference: kirin_pcie_driver+0x8 (section: .data) -> kirin_pcie_remove (section: .exit.text) > > (with ARCH=x86_64 W=1 allmodconfig). > > Fixes: 000f60db784b ("PCI: kirin: Add support for a PHY layer") > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > --- > drivers/pci/controller/dwc/pcie-kirin.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c > index d93bc2906950..2ee146767971 100644 > --- a/drivers/pci/controller/dwc/pcie-kirin.c > +++ b/drivers/pci/controller/dwc/pcie-kirin.c > @@ -741,7 +741,7 @@ static int kirin_pcie_power_on(struct platform_device *pdev, > return ret; > } > > -static int __exit kirin_pcie_remove(struct platform_device *pdev) > +static int kirin_pcie_remove(struct platform_device *pdev) > { > struct kirin_pcie *kirin_pcie = platform_get_drvdata(pdev); > > @@ -818,7 +818,7 @@ static int kirin_pcie_probe(struct platform_device *pdev) > > static struct platform_driver kirin_pcie_driver = { > .probe = kirin_pcie_probe, > - .remove = __exit_p(kirin_pcie_remove), > + .remove = kirin_pcie_remove, > .driver = { > .name = "kirin-pcie", > .of_match_table = kirin_pcie_match, > -- > 2.40.1 >