linux-bcache.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bcache: make kobj_type structures constant
@ 2023-02-14  3:13 Thomas Weißschuh
  2023-02-14  9:51 ` Coly Li
  0 siblings, 1 reply; 8+ messages in thread
From: Thomas Weißschuh @ 2023-02-14  3:13 UTC (permalink / raw)
  To: Coly Li, Kent Overstreet
  Cc: linux-bcache, linux-kernel, Thomas Weißschuh

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 <linux@weissschuh.net>
---
 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 <linux@weissschuh.net>


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-02-14  3:13 [PATCH] bcache: make kobj_type structures constant Thomas Weißschuh
@ 2023-02-14  9:51 ` Coly Li
  2023-02-14 15:21   ` Thomas Weißschuh
  0 siblings, 1 reply; 8+ messages in thread
From: Coly Li @ 2023-02-14  9:51 UTC (permalink / raw)
  To: Thomas Weißschuh; +Cc: Kent Overstreet, linux-bcache, linux-kernel



> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
> 
> 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 <linux@weissschuh.net>
> ---
> 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 <linux@weissschuh.net>
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-02-14  9:51 ` Coly Li
@ 2023-02-14 15:21   ` Thomas Weißschuh
  2023-02-14 16:16     ` Coly Li
  0 siblings, 1 reply; 8+ messages in thread
From: Thomas Weißschuh @ 2023-02-14 15:21 UTC (permalink / raw)
  To: Coly Li; +Cc: Kent Overstreet, linux-bcache, linux-kernel

On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
> 
> 
> > 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
> > 
> > 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 <linux@weissschuh.net>
> > ---
> > 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 <linux@weissschuh.net>
> > 
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-02-14 15:21   ` Thomas Weißschuh
@ 2023-02-14 16:16     ` Coly Li
  2023-04-04 17:38       ` Thomas Weißschuh
  0 siblings, 1 reply; 8+ messages in thread
From: Coly Li @ 2023-02-14 16:16 UTC (permalink / raw)
  To: Thomas Weißschuh; +Cc: Kent Overstreet, linux-bcache, linux-kernel



> 2023年2月14日 23:21,Thomas Weißschuh <linux@weissschuh.net> 写道:
> 
> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>> 
>> 
>>> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>> 
>>> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-02-14 16:16     ` Coly Li
@ 2023-04-04 17:38       ` Thomas Weißschuh
  2023-04-05 13:38         ` Coly Li
  0 siblings, 1 reply; 8+ messages in thread
From: Thomas Weißschuh @ 2023-04-04 17:38 UTC (permalink / raw)
  To: Coly Li; +Cc: Kent Overstreet, linux-bcache, linux-kernel

Hi Coly,

On 2023-02-15 00:16:03+0800, Coly Li wrote:
> > 2023年2月14日 23:21,Thomas Weißschuh <linux@weissschuh.net> 写道:
> > 
> > On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
> >> 
> >> 
> >>> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
> >>> 
> >>> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-04-04 17:38       ` Thomas Weißschuh
@ 2023-04-05 13:38         ` Coly Li
  2023-04-14 18:38           ` Thomas Weißschuh
  0 siblings, 1 reply; 8+ messages in thread
From: Coly Li @ 2023-04-05 13:38 UTC (permalink / raw)
  To: Thomas Weißschuh; +Cc: Kent Overstreet, linux-bcache, linux-kernel



> 2023年4月5日 01:38,Thomas Weißschuh <linux@weissschuh.net> 写道:
> 
> Hi Coly,
> 
> On 2023-02-15 00:16:03+0800, Coly Li wrote:
>>> 2023年2月14日 23:21,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>> 
>>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>>>> 
>>>> 
>>>>> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>>>> 
>>>>> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-04-05 13:38         ` Coly Li
@ 2023-04-14 18:38           ` Thomas Weißschuh
  2023-04-15 14:37             ` Coly Li
  0 siblings, 1 reply; 8+ messages in thread
From: Thomas Weißschuh @ 2023-04-14 18:38 UTC (permalink / raw)
  To: Coly Li; +Cc: Kent Overstreet, linux-bcache, linux-kernel

Hi Coly,

On 2023-04-05 21:38:01+0800, Coly Li wrote:
> > 2023年4月5日 01:38,Thomas Weißschuh <linux@weissschuh.net> 写道:
> > 
> > Hi Coly,
> > 
> > On 2023-02-15 00:16:03+0800, Coly Li wrote:
> >>> 2023年2月14日 23:21,Thomas Weißschuh <linux@weissschuh.net> 写道:
> >>> 
> >>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
> >>>> 
> >>>> 
> >>>>> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
> >>>>> 
> >>>>> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bcache: make kobj_type structures constant
  2023-04-14 18:38           ` Thomas Weißschuh
@ 2023-04-15 14:37             ` Coly Li
  0 siblings, 0 replies; 8+ messages in thread
From: Coly Li @ 2023-04-15 14:37 UTC (permalink / raw)
  To: Thomas Weißschuh; +Cc: Kent Overstreet, linux-bcache, linux-kernel



> 2023年4月15日 02:38,Thomas Weißschuh <linux@weissschuh.net> 写道:
> 
> Hi Coly,
> 
> On 2023-04-05 21:38:01+0800, Coly Li wrote:
>>> 2023年4月5日 01:38,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>> 
>>> Hi Coly,
>>> 
>>> On 2023-02-15 00:16:03+0800, Coly Li wrote:
>>>>> 2023年2月14日 23:21,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>>>> 
>>>>> On Tue, Feb 14, 2023 at 05:51:09PM +0800, Coly Li wrote:
>>>>>> 
>>>>>> 
>>>>>>> 2023年2月14日 11:13,Thomas Weißschuh <linux@weissschuh.net> 写道:
>>>>>>> 
>>>>>>> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-04-15 14:37 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-14  3:13 [PATCH] bcache: make kobj_type structures constant Thomas Weißschuh
2023-02-14  9:51 ` Coly Li
2023-02-14 15:21   ` Thomas Weißschuh
2023-02-14 16:16     ` Coly Li
2023-04-04 17:38       ` Thomas Weißschuh
2023-04-05 13:38         ` Coly Li
2023-04-14 18:38           ` Thomas Weißschuh
2023-04-15 14:37             ` Coly Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).