attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
1120 544 16 1680 690 kernel/ksysfs.o
File size After adding 'const':
text data bss dec hex filename
1160 480 16 1656 678 kernel/ksysfs.o
Signed-off-by: Arvind Yadav <[email protected]>
---
kernel/ksysfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 23cd706..df1a9aa 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -234,7 +234,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
NULL
};
-static struct attribute_group kernel_attr_group = {
+static const struct attribute_group kernel_attr_group = {
.attrs = kernel_attrs,
};
--
1.9.1
On Thu, Jun 29, 2017 at 5:01 AM, Arvind Yadav <[email protected]> wrote:
> attribute_groups are not supposed to change at runtime. All functions
> working with attribute_groups provided by <linux/sysfs.h> work with const
> attribute_group. So mark the non-const structs as const.
>
> File size before:
> text data bss dec hex filename
> 1120 544 16 1680 690 kernel/ksysfs.o
>
> File size After adding 'const':
> text data bss dec hex filename
> 1160 480 16 1656 678 kernel/ksysfs.o
>
> Signed-off-by: Arvind Yadav <[email protected]>
Thanks! Always nice to get more const structures. :)
Andrew, can you pick this up?
Acked-by: Kees Cook <[email protected]>
-Kees
> ---
> kernel/ksysfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
> index 23cd706..df1a9aa 100644
> --- a/kernel/ksysfs.c
> +++ b/kernel/ksysfs.c
> @@ -234,7 +234,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
> NULL
> };
>
> -static struct attribute_group kernel_attr_group = {
> +static const struct attribute_group kernel_attr_group = {
> .attrs = kernel_attrs,
> };
>
> --
> 1.9.1
>
--
Kees Cook
Pixel Security