mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 18:42:14 -04:00
powerpc/powernv/opal: 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. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Link: https://lore.kernel.org/r/20241216-sysfs-const-bin_attr-powerpc-v1-4-bbed8906f476@weissschuh.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f629576662
commit
f2b62c03a2
@@ -159,7 +159,7 @@ static Elf64_Word *__init auxv_to_elf64_notes(Elf64_Word *buf,
|
||||
* Returns number of bytes read on success, -errno on failure.
|
||||
*/
|
||||
static ssize_t read_opalcore(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *to,
|
||||
const struct bin_attribute *bin_attr, char *to,
|
||||
loff_t pos, size_t count)
|
||||
{
|
||||
struct opalcore *m;
|
||||
@@ -206,9 +206,9 @@ static ssize_t read_opalcore(struct file *file, struct kobject *kobj,
|
||||
return (tpos - pos);
|
||||
}
|
||||
|
||||
static struct bin_attribute opal_core_attr = {
|
||||
static struct bin_attribute opal_core_attr __ro_after_init = {
|
||||
.attr = {.name = "core", .mode = 0400},
|
||||
.read = read_opalcore
|
||||
.read_new = read_opalcore
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -599,7 +599,7 @@ static struct attribute *mpipl_attr[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct bin_attribute *mpipl_bin_attr[] = {
|
||||
static const struct bin_attribute *const mpipl_bin_attr[] = {
|
||||
&opal_core_attr,
|
||||
NULL,
|
||||
|
||||
@@ -607,7 +607,7 @@ static struct bin_attribute *mpipl_bin_attr[] = {
|
||||
|
||||
static const struct attribute_group mpipl_group = {
|
||||
.attrs = mpipl_attr,
|
||||
.bin_attrs = mpipl_bin_attr,
|
||||
.bin_attrs_new = mpipl_bin_attr,
|
||||
};
|
||||
|
||||
static int __init opalcore_init(void)
|
||||
|
||||
@@ -286,7 +286,7 @@ static int64_t dump_read_data(struct dump_obj *dump)
|
||||
}
|
||||
|
||||
static ssize_t dump_attr_read(struct file *filep, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
const struct bin_attribute *bin_attr,
|
||||
char *buffer, loff_t pos, size_t count)
|
||||
{
|
||||
ssize_t rc;
|
||||
@@ -342,7 +342,7 @@ static void create_dump_obj(uint32_t id, size_t size, uint32_t type)
|
||||
dump->dump_attr.attr.name = "dump";
|
||||
dump->dump_attr.attr.mode = 0400;
|
||||
dump->dump_attr.size = size;
|
||||
dump->dump_attr.read = dump_attr_read;
|
||||
dump->dump_attr.read_new = dump_attr_read;
|
||||
|
||||
dump->id = id;
|
||||
dump->size = size;
|
||||
|
||||
@@ -156,7 +156,7 @@ static const struct kobj_type elog_ktype = {
|
||||
#define OPAL_MAX_ERRLOG_SIZE 16384
|
||||
|
||||
static ssize_t raw_attr_read(struct file *filep, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
const struct bin_attribute *bin_attr,
|
||||
char *buffer, loff_t pos, size_t count)
|
||||
{
|
||||
int opal_rc;
|
||||
@@ -203,7 +203,7 @@ static void create_elog_obj(uint64_t id, size_t size, uint64_t type)
|
||||
elog->raw_attr.attr.name = "raw";
|
||||
elog->raw_attr.attr.mode = 0400;
|
||||
elog->raw_attr.size = size;
|
||||
elog->raw_attr.read = raw_attr_read;
|
||||
elog->raw_attr.read_new = raw_attr_read;
|
||||
|
||||
elog->id = id;
|
||||
elog->size = size;
|
||||
|
||||
@@ -432,7 +432,7 @@ static int alloc_image_buf(char *buffer, size_t count)
|
||||
* and pre-allocate required memory.
|
||||
*/
|
||||
static ssize_t image_data_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
const struct bin_attribute *bin_attr,
|
||||
char *buffer, loff_t pos, size_t count)
|
||||
{
|
||||
int rc;
|
||||
@@ -493,7 +493,7 @@ static ssize_t image_data_write(struct file *filp, struct kobject *kobj,
|
||||
static const struct bin_attribute image_data_attr = {
|
||||
.attr = {.name = "image", .mode = 0200},
|
||||
.size = MAX_IMAGE_SIZE, /* Limit image size */
|
||||
.write = image_data_write,
|
||||
.write_new = image_data_write,
|
||||
};
|
||||
|
||||
static struct kobj_attribute validate_attribute =
|
||||
|
||||
@@ -94,15 +94,15 @@ ssize_t opal_msglog_copy(char *to, loff_t pos, size_t count)
|
||||
}
|
||||
|
||||
static ssize_t opal_msglog_read(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *to,
|
||||
const struct bin_attribute *bin_attr, char *to,
|
||||
loff_t pos, size_t count)
|
||||
{
|
||||
return opal_msglog_copy(to, pos, count);
|
||||
}
|
||||
|
||||
static struct bin_attribute opal_msglog_attr = {
|
||||
static struct bin_attribute opal_msglog_attr __ro_after_init = {
|
||||
.attr = {.name = "msglog", .mode = 0400},
|
||||
.read = opal_msglog_read
|
||||
.read_new = opal_msglog_read
|
||||
};
|
||||
|
||||
struct memcons *__init memcons_init(struct device_node *node, const char *mc_prop_name)
|
||||
|
||||
Reference in New Issue
Block a user