Messages in this thread | | | Date | Mon, 17 Apr 2023 17:53:17 +0400 | Subject | Re: [PATCH] driver core: class: mark the struct class for sysfs callbacks as constant | From | "Denis Efremov (Oracle)" <> |
| |
Hello,
On 3/25/23 12:45, Greg Kroah-Hartman wrote: > struct class should never be modified in a sysfs callback as there is > nothing in the structure to modify, and frankly, the structure is almost > never used in a sysfs callback, so mark it as constant to allow struct > class to be moved to read-only memory. > > While we are touching all class sysfs callbacks also mark the attribute > as constant as it can not be modified. The bonding code still uses this > structure so it can not be removed from the function callbacks. >
...
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c > index b7bb52f8dfbd..3feadfb96114 100644 > --- a/drivers/block/zram/zram_drv.c > +++ b/drivers/block/zram/zram_drv.c > @@ -2424,8 +2424,8 @@ static int zram_remove(struct zram *zram) > * creates a new un-initialized zram device and returns back this device's > * device_id (or an error code if it fails to create a new device). > */ > -static ssize_t hot_add_show(struct class *class, > - struct class_attribute *attr, > +static ssize_t hot_add_show(const struct class *class, > + const struct class_attribute *attr, > char *buf) > { > int ret; > @@ -2438,11 +2438,10 @@ static ssize_t hot_add_show(struct class *class, > return ret; > return scnprintf(buf, PAGE_SIZE, "%d\n", ret); > } > -static struct class_attribute class_attr_hot_add = > - __ATTR(hot_add, 0400, hot_add_show, NULL); > +static CLASS_ATTR_RO(hot_add); > > -static ssize_t hot_remove_store(struct class *class, > - struct class_attribute *attr, > +static ssize_t hot_remove_store(const struct class *class, > + const struct class_attribute *attr, > const char *buf, > size_t count) > {
This looks like a security regression (CVE-2020-10781). Previous fix 853eab68afc80f59f36bbdeb715e5c88c501e680.
Thanks, Denis Efremov
| |