hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/block/zram/zcomp.c
....@@ -116,12 +116,20 @@
116116
117117 struct zcomp_strm *zcomp_stream_get(struct zcomp *comp)
118118 {
119
- return *get_cpu_ptr(comp->stream);
119
+ struct zcomp_strm *zstrm;
120
+
121
+ zstrm = *get_local_ptr(comp->stream);
122
+ spin_lock(&zstrm->zcomp_lock);
123
+ return zstrm;
120124 }
121125
122126 void zcomp_stream_put(struct zcomp *comp)
123127 {
124
- put_cpu_ptr(comp->stream);
128
+ struct zcomp_strm *zstrm;
129
+
130
+ zstrm = *this_cpu_ptr(comp->stream);
131
+ spin_unlock(&zstrm->zcomp_lock);
132
+ put_local_ptr(zstrm);
125133 }
126134
127135 int zcomp_compress(struct zcomp_strm *zstrm,
....@@ -171,6 +179,7 @@
171179 pr_err("Can't allocate a compression stream\n");
172180 return -ENOMEM;
173181 }
182
+ spin_lock_init(&zstrm->zcomp_lock);
174183 *per_cpu_ptr(comp->stream, cpu) = zstrm;
175184 return 0;
176185 }