Unverified Commit c0cc60b3 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Ilpo Järvinen
Browse files

platform/x86: dell: dcdbas: Constify 'struct bin_attribute'



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.

While at it switch from the custom DCDBAS_BIN_ATTR_RW() to the identical
BIN_ATTR_RW() macro.

Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20241202-sysfs-const-bin_attr-pdx86-v1-1-9ab204c2a814@weissschuh.net


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent 18131e9f
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -163,7 +163,7 @@ static ssize_t smi_data_buf_size_store(struct device *dev,
}

static ssize_t smi_data_read(struct file *filp, struct kobject *kobj,
			     struct bin_attribute *bin_attr,
			     const struct bin_attribute *bin_attr,
			     char *buf, loff_t pos, size_t count)
{
	ssize_t ret;
@@ -176,7 +176,7 @@ static ssize_t smi_data_read(struct file *filp, struct kobject *kobj,
}

static ssize_t smi_data_write(struct file *filp, struct kobject *kobj,
			      struct bin_attribute *bin_attr,
			      const struct bin_attribute *bin_attr,
			      char *buf, loff_t pos, size_t count)
{
	ssize_t ret;
@@ -636,9 +636,9 @@ static struct notifier_block dcdbas_reboot_nb = {
	.priority = INT_MIN
};

static DCDBAS_BIN_ATTR_RW(smi_data);
static const BIN_ATTR_ADMIN_RW(smi_data, 0);

static struct bin_attribute *dcdbas_bin_attrs[] = {
static const struct bin_attribute *const dcdbas_bin_attrs[] = {
	&bin_attr_smi_data,
	NULL
};
@@ -662,7 +662,7 @@ static struct attribute *dcdbas_dev_attrs[] = {

static const struct attribute_group dcdbas_attr_group = {
	.attrs = dcdbas_dev_attrs,
	.bin_attrs = dcdbas_bin_attrs,
	.bin_attrs_new = dcdbas_bin_attrs,
};

static int dcdbas_probe(struct platform_device *dev)
+0 −8
Original line number Diff line number Diff line
@@ -56,14 +56,6 @@
#define DCDBAS_DEV_ATTR_WO(_name) \
	DEVICE_ATTR(_name,0200,NULL,_name##_store);

#define DCDBAS_BIN_ATTR_RW(_name) \
struct bin_attribute bin_attr_##_name = { \
	.attr =  { .name = __stringify(_name), \
		   .mode = 0600 }, \
	.read =  _name##_read, \
	.write = _name##_write, \
}

struct smi_cmd {
	__u32 magic;
	__u32 ebx;