]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
zram: take write lock in wb limit store handlers
authorSergey Senozhatsky <senozhatsky@chromium.org>
Sat, 22 Nov 2025 07:40:26 +0000 (16:40 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 24 Nov 2025 23:08:53 +0000 (15:08 -0800)
Write device attrs handlers should take write zram init_lock.  While at
it, fixup coding styles.

Link: https://lkml.kernel.org/r/20251122074029.3948921-4-senozhatsky@chromium.org
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Reviewed-by: Brian Geffon <bgeffon@google.com>
Cc: Minchan Kim <minchan@google.com>
Cc: Richard Chang <richardycc@google.com>
Cc: Yuwen Chen <ywen.chen@foxmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/block/zram/zram_drv.c

index 5906ba0611657d46de24e0756d7f62b8482465cd..8dd733707a40db50ae7c744e5f580a530f5d903f 100644 (file)
@@ -521,7 +521,8 @@ struct zram_wb_req {
 };
 
 static ssize_t writeback_limit_enable_store(struct device *dev,
-               struct device_attribute *attr, const char *buf, size_t len)
+                                           struct device_attribute *attr,
+                                           const char *buf, size_t len)
 {
        struct zram *zram = dev_to_zram(dev);
        u64 val;
@@ -530,18 +531,19 @@ static ssize_t writeback_limit_enable_store(struct device *dev,
        if (kstrtoull(buf, 10, &val))
                return ret;
 
-       down_read(&zram->init_lock);
+       down_write(&zram->init_lock);
        spin_lock(&zram->wb_limit_lock);
        zram->wb_limit_enable = val;
        spin_unlock(&zram->wb_limit_lock);
-       up_read(&zram->init_lock);
+       up_write(&zram->init_lock);
        ret = len;
 
        return ret;
 }
 
 static ssize_t writeback_limit_enable_show(struct device *dev,
-               struct device_attribute *attr, char *buf)
+                                          struct device_attribute *attr,
+                                          char *buf)
 {
        bool val;
        struct zram *zram = dev_to_zram(dev);
@@ -556,7 +558,8 @@ static ssize_t writeback_limit_enable_show(struct device *dev,
 }
 
 static ssize_t writeback_limit_store(struct device *dev,
-               struct device_attribute *attr, const char *buf, size_t len)
+                                    struct device_attribute *attr,
+                                    const char *buf, size_t len)
 {
        struct zram *zram = dev_to_zram(dev);
        u64 val;
@@ -565,11 +568,11 @@ static ssize_t writeback_limit_store(struct device *dev,
        if (kstrtoull(buf, 10, &val))
                return ret;
 
-       down_read(&zram->init_lock);
+       down_write(&zram->init_lock);
        spin_lock(&zram->wb_limit_lock);
        zram->bd_wb_limit = val;
        spin_unlock(&zram->wb_limit_lock);
-       up_read(&zram->init_lock);
+       up_write(&zram->init_lock);
        ret = len;
 
        return ret;