2024-03-29 16:13:58

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 0/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()

Merging
=======
All further patches depend on the first patch.

Description
===========
Modules registering driver with nvmem_layout_driver_register() might
forget to set .owner field.

Solve the problem by moving this task away from the drivers to the core
code, just like we did for platform_driver in commit 9447057eaff8
("platform_device: use a macro instead of platform_driver_register").

Best regards,
Krzysztof

---
Krzysztof Kozlowski (3):
nvmem: layouts: store owner from modules with nvmem_layout_driver_register()
nvmem: layouts: onie-tlv: drop driver owner initialization
nvmem: layouts: sl28vpd: drop driver owner initialization

drivers/nvmem/layouts.c | 6 ++++--
drivers/nvmem/layouts/onie-tlv.c | 1 -
drivers/nvmem/layouts/sl28vpd.c | 1 -
include/linux/nvmem-provider.h | 5 ++++-
4 files changed, 8 insertions(+), 5 deletions(-)
---
base-commit: 7fdcff3312e16ba8d1419f8a18f465c5cc235ecf
change-id: 20240329-module-owner-nvmem-861ae7a0fc24

Best regards,
--
Krzysztof Kozlowski <[email protected]>



2024-03-29 16:14:19

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 2/3] nvmem: layouts: onie-tlv: drop driver owner initialization

Core in nvmem_layout_driver_register() already sets the .owner, so
driver does not need to.

Signed-off-by: Krzysztof Kozlowski <[email protected]>

---

Depends on the first patch.
---
drivers/nvmem/layouts/onie-tlv.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/nvmem/layouts/onie-tlv.c b/drivers/nvmem/layouts/onie-tlv.c
index 9d2ad5f2dc10..0967a32319a2 100644
--- a/drivers/nvmem/layouts/onie-tlv.c
+++ b/drivers/nvmem/layouts/onie-tlv.c
@@ -247,7 +247,6 @@ MODULE_DEVICE_TABLE(of, onie_tlv_of_match_table);

static struct nvmem_layout_driver onie_tlv_layout = {
.driver = {
- .owner = THIS_MODULE,
.name = "onie-tlv-layout",
.of_match_table = onie_tlv_of_match_table,
},

--
2.34.1


2024-03-29 16:14:20

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 1/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()

Modules registering driver with nvmem_layout_driver_register() might
forget to set .owner field. The field is used by some of other kernel
parts for reference counting (try_module_get()), so it is expected that
drivers will set it.

Solve the problem by moving this task away from the drivers to the core
code, just like we did for platform_driver in
commit 9447057eaff8 ("platform_device: use a macro instead of
platform_driver_register").

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/nvmem/layouts.c | 6 ++++--
include/linux/nvmem-provider.h | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/nvmem/layouts.c b/drivers/nvmem/layouts.c
index 8b5e2de138eb..64dc7013a098 100644
--- a/drivers/nvmem/layouts.c
+++ b/drivers/nvmem/layouts.c
@@ -52,13 +52,15 @@ static const struct bus_type nvmem_layout_bus_type = {
.remove = nvmem_layout_bus_remove,
};

-int nvmem_layout_driver_register(struct nvmem_layout_driver *drv)
+int __nvmem_layout_driver_register(struct nvmem_layout_driver *drv,
+ struct module *owner)
{
drv->driver.bus = &nvmem_layout_bus_type;
+ drv->driver.owner = owner;

return driver_register(&drv->driver);
}
-EXPORT_SYMBOL_GPL(nvmem_layout_driver_register);
+EXPORT_SYMBOL_GPL(__nvmem_layout_driver_register);

void nvmem_layout_driver_unregister(struct nvmem_layout_driver *drv)
{
diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
index f0ba0e03218f..3ebeaa0ded00 100644
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -199,7 +199,10 @@ int nvmem_add_one_cell(struct nvmem_device *nvmem,
int nvmem_layout_register(struct nvmem_layout *layout);
void nvmem_layout_unregister(struct nvmem_layout *layout);

-int nvmem_layout_driver_register(struct nvmem_layout_driver *drv);
+#define nvmem_layout_driver_register(drv) \
+ __nvmem_layout_driver_register(drv, THIS_MODULE)
+int __nvmem_layout_driver_register(struct nvmem_layout_driver *drv,
+ struct module *owner);
void nvmem_layout_driver_unregister(struct nvmem_layout_driver *drv);
#define module_nvmem_layout_driver(__nvmem_layout_driver) \
module_driver(__nvmem_layout_driver, nvmem_layout_driver_register, \

--
2.34.1


2024-03-29 16:14:28

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 3/3] nvmem: layouts: sl28vpd: drop driver owner initialization

Core in nvmem_layout_driver_register() already sets the .owner, so
driver does not need to.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/nvmem/layouts/sl28vpd.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/nvmem/layouts/sl28vpd.c b/drivers/nvmem/layouts/sl28vpd.c
index 53fa50f17dca..e93b020b0836 100644
--- a/drivers/nvmem/layouts/sl28vpd.c
+++ b/drivers/nvmem/layouts/sl28vpd.c
@@ -156,7 +156,6 @@ MODULE_DEVICE_TABLE(of, sl28vpd_of_match_table);

static struct nvmem_layout_driver sl28vpd_layout = {
.driver = {
- .owner = THIS_MODULE,
.name = "kontron-sl28vpd-layout",
.of_match_table = sl28vpd_of_match_table,
},

--
2.34.1


2024-04-02 07:16:57

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH 1/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()

Hi Krzysztof,

[email protected] wrote on Fri, 29 Mar 2024 17:13:35 +0100:

> Modules registering driver with nvmem_layout_driver_register() might
> forget to set .owner field. The field is used by some of other kernel
> parts for reference counting (try_module_get()), so it is expected that
> drivers will set it.
>
> Solve the problem by moving this task away from the drivers to the core
> code, just like we did for platform_driver in
> commit 9447057eaff8 ("platform_device: use a macro instead of
> platform_driver_register").
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Miquel Raynal <[email protected]>

Thanks,
Miquèl

2024-04-02 07:17:40

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH 2/3] nvmem: layouts: onie-tlv: drop driver owner initialization

Hi Krzysztof,

[email protected] wrote on Fri, 29 Mar 2024 17:13:36 +0100:

> Core in nvmem_layout_driver_register() already sets the .owner, so
> driver does not need to.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>
> ---

Acked-by: Miquel Raynal <[email protected]>

Thanks,
Miquèl

2024-04-02 07:18:02

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH 3/3] nvmem: layouts: sl28vpd: drop driver owner initialization

Hi Krzysztof,

[email protected] wrote on Fri, 29 Mar 2024 17:13:37 +0100:

> Core in nvmem_layout_driver_register() already sets the .owner, so
> driver does not need to.
>

Reviewed-by: Miquel Raynal <[email protected]>

> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/nvmem/layouts/sl28vpd.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/nvmem/layouts/sl28vpd.c b/drivers/nvmem/layouts/sl28vpd.c
> index 53fa50f17dca..e93b020b0836 100644
> --- a/drivers/nvmem/layouts/sl28vpd.c
> +++ b/drivers/nvmem/layouts/sl28vpd.c
> @@ -156,7 +156,6 @@ MODULE_DEVICE_TABLE(of, sl28vpd_of_match_table);
>
> static struct nvmem_layout_driver sl28vpd_layout = {
> .driver = {
> - .owner = THIS_MODULE,
> .name = "kontron-sl28vpd-layout",
> .of_match_table = sl28vpd_of_match_$

Thanks,
Miquèl

2024-04-02 08:38:02

by Michael Walle

[permalink] [raw]
Subject: Re: [PATCH 2/3] nvmem: layouts: onie-tlv: drop driver owner initialization

On Fri Mar 29, 2024 at 5:13 PM CET, Krzysztof Kozlowski wrote:
> Core in nvmem_layout_driver_register() already sets the .owner, so
> driver does not need to.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Michael Walle <[email protected]>

-michael


Attachments:
signature.asc (305.00 B)

2024-04-02 08:38:16

by Michael Walle

[permalink] [raw]
Subject: Re: [PATCH 3/3] nvmem: layouts: sl28vpd: drop driver owner initialization

On Fri Mar 29, 2024 at 5:13 PM CET, Krzysztof Kozlowski wrote:
> Core in nvmem_layout_driver_register() already sets the .owner, so
> driver does not need to.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Michael Walle <[email protected]>

-michael


Attachments:
signature.asc (305.00 B)

2024-04-02 08:44:58

by Michael Walle

[permalink] [raw]
Subject: Re: [PATCH 1/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()

On Fri Mar 29, 2024 at 5:13 PM CET, Krzysztof Kozlowski wrote:
> Modules registering driver with nvmem_layout_driver_register() might
> forget to set .owner field. The field is used by some of other kernel
> parts for reference counting (try_module_get()), so it is expected that
> drivers will set it.
>
> Solve the problem by moving this task away from the drivers to the core
> code, just like we did for platform_driver in
> commit 9447057eaff8 ("platform_device: use a macro instead of
> platform_driver_register").
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Michael Walle <[email protected]>

-michael


Attachments:
signature.asc (305.00 B)

2024-04-11 10:01:52

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH 0/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()


On Fri, 29 Mar 2024 17:13:34 +0100, Krzysztof Kozlowski wrote:
> Merging
> =======
> All further patches depend on the first patch.
>
> Description
> ===========
> Modules registering driver with nvmem_layout_driver_register() might
> forget to set .owner field.
>
> [...]

Applied, thanks!

[1/3] nvmem: layouts: store owner from modules with nvmem_layout_driver_register()
commit: e428f11ae8fb23c4c9e4ca7c178ca22e8b6335b6
[2/3] nvmem: layouts: onie-tlv: drop driver owner initialization
commit: 995b22c48ed05ef2149a364e2f4025fa14f8bb70
[3/3] nvmem: layouts: sl28vpd: drop driver owner initialization
commit: 3575d48e5d2f7fcb258f1ee951f2d4706d8ff715

Best regards,
--
Srinivas Kandagatla <[email protected]>