In order to enable compression backend's multi stream support max_comp_streams
 must be initially set to desired concurrency level before ZRAM device
 initialisation. Once the device initialised as a single stream compression
-backend (max_comp_streams equals to 0) changing the value of max_comp_streams
-will not take any effect, because single stream compression backend implemented
-as a special case and does not support dynamic max_comp_streams. Only multi
-stream backend supports dynamic max_comp_streams adjustment.
+backend (max_comp_streams equals to 1), you will see error if you try to change
+the value of max_comp_streams because single stream compression backend
+implemented as a special case by lock overhead issue and does not support
+dynamic max_comp_streams. Only multi stream backend supports dynamic
+max_comp_streams adjustment.
 
 3) Select compression algorithm
        Using comp_algorithm device attribute one can see available and
 
 }
 
 /* change max_strm limit */
-static int zcomp_strm_multi_set_max_streams(struct zcomp *comp, int num_strm)
+static bool zcomp_strm_multi_set_max_streams(struct zcomp *comp, int num_strm)
 {
        struct zcomp_strm_multi *zs = comp->stream;
        struct zcomp_strm *zstrm;
                zs->avail_strm--;
        }
        spin_unlock(&zs->strm_lock);
-       return 0;
+       return true;
 }
 
 static void zcomp_strm_multi_destroy(struct zcomp *comp)
        mutex_unlock(&zs->strm_lock);
 }
 
-static int zcomp_strm_single_set_max_streams(struct zcomp *comp, int num_strm)
+static bool zcomp_strm_single_set_max_streams(struct zcomp *comp, int num_strm)
 {
        /* zcomp_strm_single support only max_comp_streams == 1 */
-       return -ENOTSUPP;
+       return false;
 }
 
 static void zcomp_strm_single_destroy(struct zcomp *comp)
        return sz;
 }
 
-int zcomp_set_max_streams(struct zcomp *comp, int num_strm)
+bool zcomp_set_max_streams(struct zcomp *comp, int num_strm)
 {
        return comp->set_max_streams(comp, num_strm);
 }
 
 
        struct zcomp_strm *(*strm_find)(struct zcomp *comp);
        void (*strm_release)(struct zcomp *comp, struct zcomp_strm *zstrm);
-       int (*set_max_streams)(struct zcomp *comp, int num_strm);
+       bool (*set_max_streams)(struct zcomp *comp, int num_strm);
        void (*destroy)(struct zcomp *comp);
 };
 
 int zcomp_decompress(struct zcomp *comp, const unsigned char *src,
                size_t src_len, unsigned char *dst);
 
-int zcomp_set_max_streams(struct zcomp *comp, int num_strm);
+bool zcomp_set_max_streams(struct zcomp *comp, int num_strm);
 #endif /* _ZCOMP_H_ */
 
 {
        int num;
        struct zram *zram = dev_to_zram(dev);
+       int ret;
 
-       if (kstrtoint(buf, 0, &num))
-               return -EINVAL;
+       ret = kstrtoint(buf, 0, &num);
+       if (ret < 0)
+               return ret;
        if (num < 1)
                return -EINVAL;
+
        down_write(&zram->init_lock);
        if (init_done(zram)) {
-               if (zcomp_set_max_streams(zram->comp, num))
+               if (!zcomp_set_max_streams(zram->comp, num)) {
                        pr_info("Cannot change max compression streams\n");
+                       ret = -EINVAL;
+                       goto out;
+               }
        }
+
        zram->max_comp_streams = num;
+       ret = len;
+out:
        up_write(&zram->init_lock);
-       return len;
+       return ret;
 }
 
 static ssize_t comp_algorithm_show(struct device *dev,