Message ID | 20241202-sysfs-const-bin_attr-pdx86-v1-5-9ab204c2a814@weissschuh.net (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | platform/x86: Constify 'struct bin_attribute' | expand |
On 12/3/2024 1:08 AM, Thomas Weißschuh wrote: > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding. > > > The sysfs core now allows instances of 'struct bin_attribute' to be > moved into read-only memory. Make use of that to protect them against > accidental or malicious modifications. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Thanks for the patch Acked-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com> > --- > drivers/platform/x86/amd/hsmp/acpi.c | 12 ++++++------ > drivers/platform/x86/amd/hsmp/plat.c | 12 ++++++------ > 2 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c > index dd5b5773328a9aff376a389cbd0109cb8cf0e385..7d802bfe206c73a4570dcd3752faee853bb81485 100644 > --- a/drivers/platform/x86/amd/hsmp/acpi.c > +++ b/drivers/platform/x86/amd/hsmp/acpi.c > @@ -226,7 +226,7 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) > } > > static ssize_t hsmp_metric_tbl_acpi_read(struct file *filp, struct kobject *kobj, > - struct bin_attribute *bin_attr, char *buf, > + const struct bin_attribute *bin_attr, char *buf, > loff_t off, size_t count) > { > struct device *dev = container_of(kobj, struct device, kobj); > @@ -285,19 +285,19 @@ static int init_acpi(struct device *dev) > return ret; > } > > -static struct bin_attribute hsmp_metric_tbl_attr = { > +static const struct bin_attribute hsmp_metric_tbl_attr = { > .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, > - .read = hsmp_metric_tbl_acpi_read, > + .read_new = hsmp_metric_tbl_acpi_read, > .size = sizeof(struct hsmp_metric_table), > }; > > -static struct bin_attribute *hsmp_attr_list[] = { > +static const struct bin_attribute *hsmp_attr_list[] = { > &hsmp_metric_tbl_attr, > NULL > }; > > -static struct attribute_group hsmp_attr_grp = { > - .bin_attrs = hsmp_attr_list, > +static const struct attribute_group hsmp_attr_grp = { > + .bin_attrs_new = hsmp_attr_list, > .is_bin_visible = hsmp_is_sock_attr_visible, > }; > > diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c > index 748bbc35648474370275a80daf2c26e5d732f6ad..1fdcd65d398e6ceca154b804074cbba083f4b7f1 100644 > --- a/drivers/platform/x86/amd/hsmp/plat.c > +++ b/drivers/platform/x86/amd/hsmp/plat.c > @@ -59,7 +59,7 @@ static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, > } > > static ssize_t hsmp_metric_tbl_plat_read(struct file *filp, struct kobject *kobj, > - struct bin_attribute *bin_attr, char *buf, > + const struct bin_attribute *bin_attr, char *buf, > loff_t off, size_t count) > { > struct hsmp_socket *sock; > @@ -97,13 +97,13 @@ static umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, > * is_bin_visible function is used to show / hide the necessary groups. > */ > #define HSMP_BIN_ATTR(index, _list) \ > -static struct bin_attribute attr##index = { \ > +static const struct bin_attribute attr##index = { \ > .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, \ > .private = (void *)index, \ > - .read = hsmp_metric_tbl_plat_read, \ > + .read_new = hsmp_metric_tbl_plat_read, \ > .size = sizeof(struct hsmp_metric_table), \ > }; \ > -static struct bin_attribute _list[] = { \ > +static const struct bin_attribute _list[] = { \ > &attr##index, \ > NULL \ > } > @@ -118,8 +118,8 @@ HSMP_BIN_ATTR(6, *sock6_attr_list); > HSMP_BIN_ATTR(7, *sock7_attr_list); > > #define HSMP_BIN_ATTR_GRP(index, _list, _name) \ > -static struct attribute_group sock##index##_attr_grp = { \ > - .bin_attrs = _list, \ > +static const struct attribute_group sock##index##_attr_grp = { \ > + .bin_attrs_new = _list, \ > .is_bin_visible = hsmp_is_sock_attr_visible, \ > .name = #_name, \ > } > > -- > 2.47.1 >
diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index dd5b5773328a9aff376a389cbd0109cb8cf0e385..7d802bfe206c73a4570dcd3752faee853bb81485 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -226,7 +226,7 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) } static ssize_t hsmp_metric_tbl_acpi_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, + const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count) { struct device *dev = container_of(kobj, struct device, kobj); @@ -285,19 +285,19 @@ static int init_acpi(struct device *dev) return ret; } -static struct bin_attribute hsmp_metric_tbl_attr = { +static const struct bin_attribute hsmp_metric_tbl_attr = { .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, - .read = hsmp_metric_tbl_acpi_read, + .read_new = hsmp_metric_tbl_acpi_read, .size = sizeof(struct hsmp_metric_table), }; -static struct bin_attribute *hsmp_attr_list[] = { +static const struct bin_attribute *hsmp_attr_list[] = { &hsmp_metric_tbl_attr, NULL }; -static struct attribute_group hsmp_attr_grp = { - .bin_attrs = hsmp_attr_list, +static const struct attribute_group hsmp_attr_grp = { + .bin_attrs_new = hsmp_attr_list, .is_bin_visible = hsmp_is_sock_attr_visible, }; diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index 748bbc35648474370275a80daf2c26e5d732f6ad..1fdcd65d398e6ceca154b804074cbba083f4b7f1 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -59,7 +59,7 @@ static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, } static ssize_t hsmp_metric_tbl_plat_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, + const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count) { struct hsmp_socket *sock; @@ -97,13 +97,13 @@ static umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, * is_bin_visible function is used to show / hide the necessary groups. */ #define HSMP_BIN_ATTR(index, _list) \ -static struct bin_attribute attr##index = { \ +static const struct bin_attribute attr##index = { \ .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, \ .private = (void *)index, \ - .read = hsmp_metric_tbl_plat_read, \ + .read_new = hsmp_metric_tbl_plat_read, \ .size = sizeof(struct hsmp_metric_table), \ }; \ -static struct bin_attribute _list[] = { \ +static const struct bin_attribute _list[] = { \ &attr##index, \ NULL \ } @@ -118,8 +118,8 @@ HSMP_BIN_ATTR(6, *sock6_attr_list); HSMP_BIN_ATTR(7, *sock7_attr_list); #define HSMP_BIN_ATTR_GRP(index, _list, _name) \ -static struct attribute_group sock##index##_attr_grp = { \ - .bin_attrs = _list, \ +static const struct attribute_group sock##index##_attr_grp = { \ + .bin_attrs_new = _list, \ .is_bin_visible = hsmp_is_sock_attr_visible, \ .name = #_name, \ }
The sysfs core now allows instances of 'struct bin_attribute' to be moved into read-only memory. Make use of that to protect them against accidental or malicious modifications. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- drivers/platform/x86/amd/hsmp/acpi.c | 12 ++++++------ drivers/platform/x86/amd/hsmp/plat.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-)