mbox series

[0/4] pci: Fix some section mismatches

Message ID 20231001170254.2506508-1-u.kleine-koenig@pengutronix.de
Headers show
Series pci: Fix some section mismatches | expand

Message

Uwe Kleine-König Oct. 1, 2023, 5:02 p.m. UTC
Hello,

modpost checks about section mismatches are about to get stronger, see
https://lore.kernel.org/linux-kbuild/20230930165204.2478282-1-u.kleine-koenig@pengutronix.de
.

With the above patch applied, enabling the exynos and kirin drivers as
modules result in a warning about their remove functions that is fixed
here. The keystone driver is a bit special as it can only be enabled
built-in and used __refdata on its driver struct. It also had a similar
issue for .probe fixed in the last patch.

IMHO all four patches qualify for backporting to stable.

Best regards
Uwe

Uwe Kleine-König (4):
  PCI: exynos: Don't put .remove callback in .exit.text section
  PCI: kirin: Don't put .remove callback in .exit.text section
  PCI: keystone: Don't put .remove callback in .exit.text section
  PCI: keystone: Don't put .probe callback in .init.text section

 drivers/pci/controller/dwc/pci-exynos.c   | 4 ++--
 drivers/pci/controller/dwc/pci-keystone.c | 8 ++++----
 drivers/pci/controller/dwc/pcie-kirin.c   | 4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

base-commit: 6465e260f48790807eef06b583b38ca9789b6072

Comments

Alim Akhtar Oct. 2, 2023, 1:38 a.m. UTC | #1
> -----Original Message-----
> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Sent: Sunday, October 1, 2023 10:33 PM
> To: Jingoo Han <jingoohan1@gmail.com>; Lorenzo Pieralisi
> <lpieralisi@kernel.org>; Krzysztof Wilczyński <kw@linux.com>; Bjorn Helgaas
> <bhelgaas@google.com>; Krzysztof Kozlowski
> <krzysztof.kozlowski@linaro.org>; Kukjin Kim <kgene.kim@samsung.com>; Siva
> Reddy Kallam <siva.kallam@samsung.com>; Surendranath Gurivireddy Balla
> <suren.reddy@samsung.com>
> Cc: Rob Herring <robh@kernel.org>; Alim Akhtar <alim.akhtar@samsung.com>;
> linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-samsung-
> soc@vger.kernel.org; kernel@pengutronix.de
> Subject: [PATCH 1/4] PCI: exynos: Don't put .remove callback in .exit.text
> section
> 
> With CONFIG_PCI_EXYNOS=y and exynos_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.
> 
> The right thing to do is do always have the remove callback available.
> This fixes the following warning by modpost:
> 
> 	WARNING: modpost: drivers/pci/controller/dwc/pci-exynos: section
> mismatch in reference: exynos_pcie_driver+0x8 (section: .data) ->
> exynos_pcie_remove (section: .exit.text)
> 
> (with ARCH=x86_64 W=1 allmodconfig).
> 
> Fixes: 340cba6092c2 ("pci: Add PCIe driver for Samsung Exynos")
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
Thanks!

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

>  drivers/pci/controller/dwc/pci-exynos.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-exynos.c
> b/drivers/pci/controller/dwc/pci-exynos.c
> index 6319082301d6..c6bede346932 100644
> --- a/drivers/pci/controller/dwc/pci-exynos.c
> +++ b/drivers/pci/controller/dwc/pci-exynos.c
> @@ -375,7 +375,7 @@ static int exynos_pcie_probe(struct platform_device
> *pdev)
>  	return ret;
>  }
> 
> -static int __exit exynos_pcie_remove(struct platform_device *pdev)
> +static int exynos_pcie_remove(struct platform_device *pdev)
>  {
>  	struct exynos_pcie *ep = platform_get_drvdata(pdev);
> 
> @@ -431,7 +431,7 @@ static const struct of_device_id
> exynos_pcie_of_match[] = {
> 
>  static struct platform_driver exynos_pcie_driver = {
>  	.probe		= exynos_pcie_probe,
> -	.remove		= __exit_p(exynos_pcie_remove),
> +	.remove		= exynos_pcie_remove,
>  	.driver = {
>  		.name	= "exynos-pcie",
>  		.of_match_table = exynos_pcie_of_match,
> --
> 2.40.1
Bjorn Helgaas Oct. 10, 2023, 5:23 p.m. UTC | #2
On Sun, Oct 01, 2023 at 07:02:50PM +0200, Uwe Kleine-König wrote:
> Hello,
> 
> modpost checks about section mismatches are about to get stronger, see
> https://lore.kernel.org/linux-kbuild/20230930165204.2478282-1-u.kleine-koenig@pengutronix.de
> .
> 
> With the above patch applied, enabling the exynos and kirin drivers as
> modules result in a warning about their remove functions that is fixed
> here. The keystone driver is a bit special as it can only be enabled
> built-in and used __refdata on its driver struct. It also had a similar
> issue for .probe fixed in the last patch.
> 
> IMHO all four patches qualify for backporting to stable.

I added stable tags and applied to pci/enumeration for v6.7, thanks!

> Uwe Kleine-König (4):
>   PCI: exynos: Don't put .remove callback in .exit.text section
>   PCI: kirin: Don't put .remove callback in .exit.text section
>   PCI: keystone: Don't put .remove callback in .exit.text section
>   PCI: keystone: Don't put .probe callback in .init.text section

I updated the subjects to be "Don't discard ... callback" to try to
give a little more semantic context.

>  drivers/pci/controller/dwc/pci-exynos.c   | 4 ++--
>  drivers/pci/controller/dwc/pci-keystone.c | 8 ++++----
>  drivers/pci/controller/dwc/pcie-kirin.c   | 4 ++--
>  3 files changed, 8 insertions(+), 8 deletions(-)
> 
> base-commit: 6465e260f48790807eef06b583b38ca9789b6072
> -- 
> 2.40.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel