]> rtime.felk.cvut.cz Git - zynq/linux.git/blobdiff - drivers/block/zram/zcomp.c
Apply preempt_rt patch-4.9-rt1.patch.xz
[zynq/linux.git] / drivers / block / zram / zcomp.c
index 4b5cd3a7b2b646b31a54e29eeb43661acf65e7a6..fa8329ad79fd3918a39b8cd9fcf7ca6ade58bacd 100644 (file)
@@ -118,12 +118,19 @@ ssize_t zcomp_available_show(const char *comp, char *buf)
 
 struct zcomp_strm *zcomp_stream_get(struct zcomp *comp)
 {
-       return *get_cpu_ptr(comp->stream);
+       struct zcomp_strm *zstrm;
+
+       zstrm = *this_cpu_ptr(comp->stream);
+       spin_lock(&zstrm->zcomp_lock);
+       return zstrm;
 }
 
 void zcomp_stream_put(struct zcomp *comp)
 {
-       put_cpu_ptr(comp->stream);
+       struct zcomp_strm *zstrm;
+
+       zstrm = *this_cpu_ptr(comp->stream);
+       spin_unlock(&zstrm->zcomp_lock);
 }
 
 int zcomp_compress(struct zcomp_strm *zstrm,
@@ -174,6 +181,7 @@ static int __zcomp_cpu_notifier(struct zcomp *comp,
                        pr_err("Can't allocate a compression stream\n");
                        return NOTIFY_BAD;
                }
+               spin_lock_init(&zstrm->zcomp_lock);
                *per_cpu_ptr(comp->stream, cpu) = zstrm;
                break;
        case CPU_DEAD: