2024-03-14 18:48:27

by Ayush Tiwari

[permalink] [raw]
Subject: [PATCH v4] staging: greybus: Constify gb_audio_module_type

Constify static struct kobj_type gb_audio_module_type to prevent
modification of data shared across many instances, ensuring that the
structure's usage is consistent and predictable throughout the driver
and allows the compiler to place it in read-only memory.
The gb_audio_module_type structure is used when initializing and
adding kobj instances to the kernel's object hierarchy.
After adding const, any attempt to alter gb_audio_module_type
in the code is raising a compile-time error. This enforcement
ensures that the sysfs interface and operations for audio
modules remain stable.

Signed-off-by: Ayush Tiwari <[email protected]>

---
Changes in v4: added more details verifying the change.

Changes in v3: added the message that verifies the change,
as suggested by Julia

Changes in v2: incorporated changes in commit message
as suggested by Alison
---
drivers/staging/greybus/audio_manager_module.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/greybus/audio_manager_module.c b/drivers/staging/greybus/audio_manager_module.c
index 5f9dcbdbc191..4a4dfb42f50f 100644
--- a/drivers/staging/greybus/audio_manager_module.c
+++ b/drivers/staging/greybus/audio_manager_module.c
@@ -144,7 +144,7 @@ static struct attribute *gb_audio_module_default_attrs[] = {
};
ATTRIBUTE_GROUPS(gb_audio_module_default);

-static struct kobj_type gb_audio_module_type = {
+static const struct kobj_type gb_audio_module_type = {
.sysfs_ops = &gb_audio_module_sysfs_ops,
.release = gb_audio_module_release,
.default_groups = gb_audio_module_default_groups,
--
2.40.1



2024-03-16 17:42:00

by Fabio M. De Francesco

[permalink] [raw]
Subject: Re: [PATCH v4] staging: greybus: Constify gb_audio_module_type

On Thursday, 14 March 2024 19:48:01 CET Ayush Tiwari wrote:
> Constify static struct kobj_type gb_audio_module_type to prevent
> modification of data shared across many instances,

I overlooked these in v3...

What do you exactly mean, in this context, by "data shared across many
instances"? Can you please clarify that?

I suspect that by "shared data" we usually mean something different.

> ensuring that the
> structure's usage is consistent and predictable throughout the driver
> and allows

ensuring, allowing (s/allows/allowing/).

> the compiler to place it in read-only memory.
> The gb_audio_module_type structure is used when initializing and
> adding kobj instances to the kernel's object hierarchy.
> After adding const, any attempt to alter gb_audio_module_type
> in the code is raising

would raise?

Fabio

> a compile-time error. This enforcement
> ensures that the sysfs interface and operations for audio
> modules remain stable.
>
> Signed-off-by: Ayush Tiwari <[email protected]>
>
> ---
> Changes in v4: added more details verifying the change.
>
> Changes in v3: added the message that verifies the change,
> as suggested by Julia
>
> Changes in v2: incorporated changes in commit message
> as suggested by Alison
> ---
> drivers/staging/greybus/audio_manager_module.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/greybus/audio_manager_module.c
> b/drivers/staging/greybus/audio_manager_module.c index
> 5f9dcbdbc191..4a4dfb42f50f 100644
> --- a/drivers/staging/greybus/audio_manager_module.c
> +++ b/drivers/staging/greybus/audio_manager_module.c
> @@ -144,7 +144,7 @@ static struct attribute
> *gb_audio_module_default_attrs[] = { };
> ATTRIBUTE_GROUPS(gb_audio_module_default);
>
> -static struct kobj_type gb_audio_module_type = {
> +static const struct kobj_type gb_audio_module_type = {
> .sysfs_ops = &gb_audio_module_sysfs_ops,
> .release = gb_audio_module_release,
> .default_groups = gb_audio_module_default_groups,