On 2016-10-16 05:14:22 [+0200], Mike Galbraith wrote: > > In v4.7, the driver switched to percpu compression streams, disabling > preemption (get/put_cpu_ptr()). Use get/put_cpu_light() instead.
I am not convinced that this will work. Nothing prevents zram_bvec_write() to be reentrant on the same CPU what I can tell from browsing over the code and since it uses zstrm->buffer for compression it can go wrong. Also I don't know if crypto's tfm handler can be used in parallel for any ops (it usually does not work for crypto). I suggest a local lock or a good reason why the this patch works. Sebastian