2023-02-14 03:14:47

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH] bcache: make kobj_type structures constant

Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
the driver core allows the usage of const struct kobj_type.

Take advantage of this to constify the structure definitions to prevent
modification at runtime.

Signed-off-by: Thomas Weißschuh <[email protected]>
---
drivers/md/bcache/bcache.h | 10 +++++-----
drivers/md/bcache/sysfs.h | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h
index aebb7ef10e63..a522f4f1f992 100644
--- a/drivers/md/bcache/bcache.h
+++ b/drivers/md/bcache/bcache.h
@@ -1004,11 +1004,11 @@ extern struct workqueue_struct *bch_flush_wq;
extern struct mutex bch_register_lock;
extern struct list_head bch_cache_sets;

-extern struct kobj_type bch_cached_dev_ktype;
-extern struct kobj_type bch_flash_dev_ktype;
-extern struct kobj_type bch_cache_set_ktype;
-extern struct kobj_type bch_cache_set_internal_ktype;
-extern struct kobj_type bch_cache_ktype;
+extern const struct kobj_type bch_cached_dev_ktype;
+extern const struct kobj_type bch_flash_dev_ktype;
+extern const struct kobj_type bch_cache_set_ktype;
+extern const struct kobj_type bch_cache_set_internal_ktype;
+extern const struct kobj_type bch_cache_ktype;

void bch_cached_dev_release(struct kobject *kobj);
void bch_flash_dev_release(struct kobject *kobj);
diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h
index a2ff6447b699..65b8bd975ab1 100644
--- a/drivers/md/bcache/sysfs.h
+++ b/drivers/md/bcache/sysfs.h
@@ -3,7 +3,7 @@
#define _BCACHE_SYSFS_H_

#define KTYPE(type) \
-struct kobj_type type ## _ktype = { \
+const struct kobj_type type ## _ktype = { \
.release = type ## _release, \
.sysfs_ops = &((const struct sysfs_ops) { \
.show = type ## _show, \

---
base-commit: f6feea56f66d34259c4222fa02e8171c4f2673d1
change-id: 20230214-kobj_type-bcache-6d2bd129b0fa

Best regards,
--
Thomas Weißschuh <[email protected]>



2023-02-14 09:51:49

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant



> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
>
> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
> the driver core allows the usage of const struct kobj_type.
>
> Take advantage of this to constify the structure definitions to prevent
> modification at runtime.
>

How the const structure definition can prevent modification at run time?

Thanks.

Coly Li


> Signed-off-by: Thomas Weißschuh <[email protected]>
> ---
> drivers/md/bcache/bcache.h | 10 +++++-----
> drivers/md/bcache/sysfs.h | 2 +-
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h
> index aebb7ef10e63..a522f4f1f992 100644
> --- a/drivers/md/bcache/bcache.h
> +++ b/drivers/md/bcache/bcache.h
> @@ -1004,11 +1004,11 @@ extern struct workqueue_struct *bch_flush_wq;
> extern struct mutex bch_register_lock;
> extern struct list_head bch_cache_sets;
>
> -extern struct kobj_type bch_cached_dev_ktype;
> -extern struct kobj_type bch_flash_dev_ktype;
> -extern struct kobj_type bch_cache_set_ktype;
> -extern struct kobj_type bch_cache_set_internal_ktype;
> -extern struct kobj_type bch_cache_ktype;
> +extern const struct kobj_type bch_cached_dev_ktype;
> +extern const struct kobj_type bch_flash_dev_ktype;
> +extern const struct kobj_type bch_cache_set_ktype;
> +extern const struct kobj_type bch_cache_set_internal_ktype;
> +extern const struct kobj_type bch_cache_ktype;
>
> void bch_cached_dev_release(struct kobject *kobj);
> void bch_flash_dev_release(struct kobject *kobj);
> diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h
> index a2ff6447b699..65b8bd975ab1 100644
> --- a/drivers/md/bcache/sysfs.h
> +++ b/drivers/md/bcache/sysfs.h
> @@ -3,7 +3,7 @@
> #define _BCACHE_SYSFS_H_
>
> #define KTYPE(type) \
> -struct kobj_type type ## _ktype = { \
> +const struct kobj_type type ## _ktype = { \
> .release = type ## _release, \
> .sysfs_ops = &((const struct sysfs_ops) { \
> .show = type ## _show, \
>
> ---
> base-commit: f6feea56f66d34259c4222fa02e8171c4f2673d1
> change-id: 20230214-kobj_type-bcache-6d2bd129b0fa
>
> Best regards,
> --
> Thomas Weißschuh <[email protected]>
>


2023-02-14 15:22:02

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant

On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>
>
> > 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
> >
> > Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
> > the driver core allows the usage of const struct kobj_type.
> >
> > Take advantage of this to constify the structure definitions to prevent
> > modification at runtime.
> >
>
> How the const structure definition can prevent modification at run time?

It will be put into .rodata instead of .data by the compiler.
The .rodata section is mapped as read-only via the pagetable.

See Documentation/security/self-protection.rst
"Function pointers and sensitive variables must not be writable".

Thomas

> Thanks.
>
> Coly Li
>
>
> > Signed-off-by: Thomas Weißschuh <[email protected]>
> > ---
> > drivers/md/bcache/bcache.h | 10 +++++-----
> > drivers/md/bcache/sysfs.h | 2 +-
> > 2 files changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h
> > index aebb7ef10e63..a522f4f1f992 100644
> > --- a/drivers/md/bcache/bcache.h
> > +++ b/drivers/md/bcache/bcache.h
> > @@ -1004,11 +1004,11 @@ extern struct workqueue_struct *bch_flush_wq;
> > extern struct mutex bch_register_lock;
> > extern struct list_head bch_cache_sets;
> >
> > -extern struct kobj_type bch_cached_dev_ktype;
> > -extern struct kobj_type bch_flash_dev_ktype;
> > -extern struct kobj_type bch_cache_set_ktype;
> > -extern struct kobj_type bch_cache_set_internal_ktype;
> > -extern struct kobj_type bch_cache_ktype;
> > +extern const struct kobj_type bch_cached_dev_ktype;
> > +extern const struct kobj_type bch_flash_dev_ktype;
> > +extern const struct kobj_type bch_cache_set_ktype;
> > +extern const struct kobj_type bch_cache_set_internal_ktype;
> > +extern const struct kobj_type bch_cache_ktype;
> >
> > void bch_cached_dev_release(struct kobject *kobj);
> > void bch_flash_dev_release(struct kobject *kobj);
> > diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h
> > index a2ff6447b699..65b8bd975ab1 100644
> > --- a/drivers/md/bcache/sysfs.h
> > +++ b/drivers/md/bcache/sysfs.h
> > @@ -3,7 +3,7 @@
> > #define _BCACHE_SYSFS_H_
> >
> > #define KTYPE(type) \
> > -struct kobj_type type ## _ktype = { \
> > +const struct kobj_type type ## _ktype = { \
> > .release = type ## _release, \
> > .sysfs_ops = &((const struct sysfs_ops) { \
> > .show = type ## _show, \
> >
> > ---
> > base-commit: f6feea56f66d34259c4222fa02e8171c4f2673d1
> > change-id: 20230214-kobj_type-bcache-6d2bd129b0fa
> >
> > Best regards,
> > --
> > Thomas Weißschuh <[email protected]>
> >
>

2023-02-14 16:16:23

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant



> 2023年2月14日 23:21,Thomas Weißschuh <[email protected]> 写道:
>
> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>>
>>
>>> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
>>>
>>> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
>>> the driver core allows the usage of const struct kobj_type.
>>>
>>> Take advantage of this to constify the structure definitions to prevent
>>> modification at runtime.
>>>
>>
>> How the const structure definition can prevent modification at run time?
>
> It will be put into .rodata instead of .data by the compiler.
> The .rodata section is mapped as read-only via the pagetable.
>
> See Documentation/security/self-protection.rst
> "Function pointers and sensitive variables must not be writable".

I see. Thanks for the information.

This patch will be added into my testing queue, and submitted later.

Coly Li


2023-04-04 17:57:44

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant

Hi Coly,

On 2023-02-15 00:16:03+0800, Coly Li wrote:
> > 2023年2月14日 23:21,Thomas Weißschuh <[email protected]> 写道:
> >
> > On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
> >>
> >>
> >>> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
> >>>
> >>> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
> >>> the driver core allows the usage of const struct kobj_type.
> >>>
> >>> Take advantage of this to constify the structure definitions to prevent
> >>> modification at runtime.
> >>>
> >>
> >> How the const structure definition can prevent modification at run time?
> >
> > It will be put into .rodata instead of .data by the compiler.
> > The .rodata section is mapped as read-only via the pagetable.
> >
> > See Documentation/security/self-protection.rst
> > "Function pointers and sensitive variables must not be writable".
>
> I see. Thanks for the information.
>
> This patch will be added into my testing queue, and submitted later.

It seems this was not submitted.
Or did I miss it?

Thanks,
Thomas

2023-04-05 13:39:12

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant



> 2023年4月5日 01:38,Thomas Weißschuh <[email protected]> 写道:
>
> Hi Coly,
>
> On 2023-02-15 00:16:03+0800, Coly Li wrote:
>>> 2023年2月14日 23:21,Thomas Weißschuh <[email protected]> 写道:
>>>
>>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>>>>
>>>>
>>>>> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
>>>>>
>>>>> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
>>>>> the driver core allows the usage of const struct kobj_type.
>>>>>
>>>>> Take advantage of this to constify the structure definitions to prevent
>>>>> modification at runtime.
>>>>>
>>>>
>>>> How the const structure definition can prevent modification at run time?
>>>
>>> It will be put into .rodata instead of .data by the compiler.
>>> The .rodata section is mapped as read-only via the pagetable.
>>>
>>> See Documentation/security/self-protection.rst
>>> "Function pointers and sensitive variables must not be writable".
>>
>> I see. Thanks for the information.
>>
>> This patch will be added into my testing queue, and submitted later.
>
> It seems this was not submitted.
> Or did I miss it?

No I don’t submit it yet. It is not emergent fix, and stay with other testing patches together.

Do you want it to go now?

Coly Li

2023-04-14 18:45:15

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant

Hi Coly,

On 2023-04-05 21:38:01+0800, Coly Li wrote:
> > 2023年4月5日 01:38,Thomas Weißschuh <[email protected]> 写道:
> >
> > Hi Coly,
> >
> > On 2023-02-15 00:16:03+0800, Coly Li wrote:
> >>> 2023年2月14日 23:21,Thomas Weißschuh <[email protected]> 写道:
> >>>
> >>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
> >>>>
> >>>>
> >>>>> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
> >>>>>
> >>>>> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
> >>>>> the driver core allows the usage of const struct kobj_type.
> >>>>>
> >>>>> Take advantage of this to constify the structure definitions to prevent
> >>>>> modification at runtime.
> >>>>>
> >>>>
> >>>> How the const structure definition can prevent modification at run time?
> >>>
> >>> It will be put into .rodata instead of .data by the compiler.
> >>> The .rodata section is mapped as read-only via the pagetable.
> >>>
> >>> See Documentation/security/self-protection.rst
> >>> "Function pointers and sensitive variables must not be writable".
> >>
> >> I see. Thanks for the information.
> >>
> >> This patch will be added into my testing queue, and submitted later.
> >
> > It seems this was not submitted.
> > Or did I miss it?
>
> No I don’t submit it yet. It is not emergent fix, and stay with other testing patches together.
>
> Do you want it to go now?

No, it's not urgent.

I just assumed it should have been in next by now and thought it got
lost along the way.
Let's keep it with the other testing patches.

Thanks and sorry for bothering you,
Thomas

2023-04-15 14:45:02

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH] bcache: make kobj_type structures constant



> 2023年4月15日 02:38,Thomas Weißschuh <[email protected]> 写道:
>
> Hi Coly,
>
> On 2023-04-05 21:38:01+0800, Coly Li wrote:
>>> 2023年4月5日 01:38,Thomas Weißschuh <[email protected]> 写道:
>>>
>>> Hi Coly,
>>>
>>> On 2023-02-15 00:16:03+0800, Coly Li wrote:
>>>>> 2023年2月14日 23:21,Thomas Weißschuh <[email protected]> 写道:
>>>>>
>>>>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>>>>>>
>>>>>>
>>>>>>> 2023年2月14日 11:13,Thomas Weißschuh <[email protected]> 写道:
>>>>>>>
>>>>>>> Since commit ee6d3dd4ed48 ("driver core: make kobj_type constant.")
>>>>>>> the driver core allows the usage of const struct kobj_type.
>>>>>>>
>>>>>>> Take advantage of this to constify the structure definitions to prevent
>>>>>>> modification at runtime.
>>>>>>>
>>>>>>
>>>>>> How the const structure definition can prevent modification at run time?
>>>>>
>>>>> It will be put into .rodata instead of .data by the compiler.
>>>>> The .rodata section is mapped as read-only via the pagetable.
>>>>>
>>>>> See Documentation/security/self-protection.rst
>>>>> "Function pointers and sensitive variables must not be writable".
>>>>
>>>> I see. Thanks for the information.
>>>>
>>>> This patch will be added into my testing queue, and submitted later.
>>>
>>> It seems this was not submitted.
>>> Or did I miss it?
>>
>> No I don’t submit it yet. It is not emergent fix, and stay with other testing patches together.
>>
>> Do you want it to go now?
>
> No, it's not urgent.
>
> I just assumed it should have been in next by now and thought it got
> lost along the way.
> Let's keep it with the other testing patches.

Some patches from Zheming are not simple, and I need to find time to go through them carefully.
If I am not able to handle them in time, I will submit the simple ones to Jens some time later.

Thanks.

Coly Li