2024-05-27 20:25:48

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
variable, the users, which can be compiled as modules, will be failed to
build. Export the variable to the modules to prevent build breakage.

Reported-by: Woody Suwalski <[email protected]>
Closes: https://lore.kernel.org/r/[email protected]
Fixes: 2a49b45cd0e7 ("PNP: Add dev_is_pnp() macro")
Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/pnp/driver.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
index 0a5d0d8befa8..1394d17bd6f7 100644
--- a/drivers/pnp/driver.c
+++ b/drivers/pnp/driver.c
@@ -265,6 +265,7 @@ const struct bus_type pnp_bus_type = {
.pm = &pnp_bus_dev_pm_ops,
.dev_groups = pnp_dev_groups,
};
+EXPORT_SYMBOL(pnp_bus_type);

int pnp_register_driver(struct pnp_driver *drv)
{
--
2.45.1



2024-05-27 22:20:07

by Woody Suwalski

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

Andy Shevchenko wrote:
> Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> variable, the users, which can be compiled as modules, will be failed to
> build. Export the variable to the modules to prevent build breakage.
>
> Reported-by: Woody Suwalski <[email protected]>
> Closes: https://lore.kernel.org/r/[email protected]
> Fixes: 2a49b45cd0e7 ("PNP: Add dev_is_pnp() macro")
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
> drivers/pnp/driver.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
> index 0a5d0d8befa8..1394d17bd6f7 100644
> --- a/drivers/pnp/driver.c
> +++ b/drivers/pnp/driver.c
> @@ -265,6 +265,7 @@ const struct bus_type pnp_bus_type = {
> .pm = &pnp_bus_dev_pm_ops,
> .dev_groups = pnp_dev_groups,
> };
> +EXPORT_SYMBOL(pnp_bus_type);
>
> int pnp_register_driver(struct pnp_driver *drv)
> {
Confirm the patch works OK.

Tested-by: Woody Suwalski <[email protected]>

Thanks, Woody


2024-05-28 04:58:56

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Mon, May 27, 2024 at 11:24:24PM +0300, Andy Shevchenko wrote:
> Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> variable, the users, which can be compiled as modules, will be failed to
> build. Export the variable to the modules to prevent build breakage.

NAK. Please move dev_is_pnp out of line and export it (as
EXPORT_SYMBOL_GPL), please. bus types should be private unless we have
really good reasons for them not to be private.


2024-05-28 07:11:00

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Tue, May 28, 2024 at 7:58 AM Christoph Hellwig <[email protected]> wrote:
>
> On Mon, May 27, 2024 at 11:24:24PM +0300, Andy Shevchenko wrote:
> > Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> > variable, the users, which can be compiled as modules, will be failed to
> > build. Export the variable to the modules to prevent build breakage.
>
> NAK. Please move dev_is_pnp out of line and export it (as
> EXPORT_SYMBOL_GPL), please. bus types should be private unless we have
> really good reasons for them not to be private.

Works for me, I'll redo it in the v2, thank you for the review.

--
With Best Regards,
Andy Shevchenko

2024-05-28 07:13:19

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Tue, May 28, 2024 at 7:58 AM Christoph Hellwig <[email protected]> wrote:
>
> On Mon, May 27, 2024 at 11:24:24PM +0300, Andy Shevchenko wrote:
> > Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> > variable, the users, which can be compiled as modules, will be failed to
> > build. Export the variable to the modules to prevent build breakage.
>
> NAK. Please move dev_is_pnp out of line and export it (as
> EXPORT_SYMBOL_GPL), please. bus types should be private unless we have
> really good reasons for them not to be private.

FWIW, it's not private, it's just not exported to the modules. Are you
suggesting to hide the bus type completely to make it static? If so,
this is out of scope of this fix.

--
With Best Regards,
Andy Shevchenko

2024-05-28 07:14:14

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Tue, May 28, 2024 at 10:12:31AM +0300, Andy Shevchenko wrote:
> > NAK. Please move dev_is_pnp out of line and export it (as
> > EXPORT_SYMBOL_GPL), please. bus types should be private unless we have
> > really good reasons for them not to be private.
>
> FWIW, it's not private, it's just not exported to the modules. Are you
> suggesting to hide the bus type completely to make it static? If so,
> this is out of scope of this fix.

Not exporting it is the most important bit. Making it private would
be even better of course.


2024-05-28 09:43:07

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Mon, May 27, 2024 at 10:24 PM Andy Shevchenko
<[email protected]> wrote:
>
> Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> variable, the users, which can be compiled as modules, will be failed to
> build. Export the variable to the modules to prevent build breakage.
>
> Reported-by: Woody Suwalski <[email protected]>
> Closes: https://lore.kernel.org/r/[email protected]
> Fixes: 2a49b45cd0e7 ("PNP: Add dev_is_pnp() macro")
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
> drivers/pnp/driver.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
> index 0a5d0d8befa8..1394d17bd6f7 100644
> --- a/drivers/pnp/driver.c
> +++ b/drivers/pnp/driver.c
> @@ -265,6 +265,7 @@ const struct bus_type pnp_bus_type = {
> .pm = &pnp_bus_dev_pm_ops,
> .dev_groups = pnp_dev_groups,
> };
> +EXPORT_SYMBOL(pnp_bus_type);

Why not EXPORT_SYMBOL_GPL()?

> int pnp_register_driver(struct pnp_driver *drv)
> {
> --
> 2.45.1
>
>

2024-05-28 09:53:22

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Tue, May 28, 2024 at 12:42 PM Rafael J. Wysocki <[email protected]> wrote:
> On Mon, May 27, 2024 at 10:24 PM Andy Shevchenko
> <[email protected]> wrote:
> >
> > Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> > variable, the users, which can be compiled as modules, will be failed to
> > build. Export the variable to the modules to prevent build breakage.

..

> > +EXPORT_SYMBOL(pnp_bus_type);
>
> Why not EXPORT_SYMBOL_GPL()?

To be consistent with the rest, but in any case Christoph suggested
something else, where _GPL is assumed to be.

--
With Best Regards,
Andy Shevchenko

2024-05-28 10:01:50

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] PNP: Export pnp_bus_type for modules

On Tue, May 28, 2024 at 11:53 AM Andy Shevchenko
<[email protected]> wrote:
>
> On Tue, May 28, 2024 at 12:42 PM Rafael J. Wysocki <rafael@kernelorg> wrote:
> > On Mon, May 27, 2024 at 10:24 PM Andy Shevchenko
> > <[email protected]> wrote:
> > >
> > > Since we have dev_is_pnp() macro that utilises the address of pnp_bus_type
> > > variable, the users, which can be compiled as modules, will be failed to
> > > build. Export the variable to the modules to prevent build breakage.
>
> ...
>
> > > +EXPORT_SYMBOL(pnp_bus_type);
> >
> > Why not EXPORT_SYMBOL_GPL()?
>
> To be consistent with the rest, but in any case Christoph suggested
> something else, where _GPL is assumed to be.

Yes, that's even better.