]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
zram: correctly handle all next_arg() cases
authorSergey Senozhatsky <senozhatsky@chromium.org>
Tue, 3 Jan 2023 03:01:19 +0000 (12:01 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 19 Jan 2023 01:12:56 +0000 (17:12 -0800)
When supplied buffer does not have assignment sign next_arg() sets `val`
pointer to NULL, so we cannot dereference it.  Add a NULL pointer test to
handle `param` case, in addition to `*val` test, which handles cases when
param has no value assigned to it: `param=`.

Link: https://lkml.kernel.org/r/20230103030119.1496358-1-senozhatsky@chromium.org
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/block/zram/zram_drv.c

index 7becd5448791ec08002a42f85bded069161d679d..5d1088a645e390a39df1d5dba2d956d886a0e618 100644 (file)
@@ -1140,7 +1140,7 @@ static ssize_t recomp_algorithm_store(struct device *dev,
        while (*args) {
                args = next_arg(args, &param, &val);
 
-               if (!*val)
+               if (!val || !*val)
                        return -EINVAL;
 
                if (!strcmp(param, "algo")) {
@@ -1824,7 +1824,7 @@ static ssize_t recompress_store(struct device *dev,
        while (*args) {
                args = next_arg(args, &param, &val);
 
-               if (!*val)
+               if (!val || !*val)
                        return -EINVAL;
 
                if (!strcmp(param, "type")) {