linux/drivers/staging/zram
Jiang Liu 57ab048532 zram: use zram->lock to protect zram_free_page() in swap free notify path
zram_slot_free_notify() is free-running without any protection from
concurrent operations. So there are race conditions between
zram_bvec_read()/zram_bvec_write() and zram_slot_free_notify(),
and possible consequences include:
1) Trigger BUG_ON(!handle) on zram_bvec_write() side.
2) Access to freed pages on zram_bvec_read() side.
3) Break some fields (bad_compress, good_compress, pages_stored)
   in zram->stats if the swap layer makes concurrently call to
   zram_slot_free_notify().

So enhance zram_slot_free_notify() to acquire writer lock on zram->lock
before calling zram_free_page().

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-06-06 12:12:20 -07:00
..
Kconfig staging: Add angle bracket before and after the URL 2013-01-07 14:56:04 -08:00
Makefile staging: zram: replace xvmalloc with zsmalloc 2012-02-08 17:13:00 -08:00
zram_drv.c zram: use zram->lock to protect zram_free_page() in swap free notify path 2013-06-06 12:12:20 -07:00
zram_drv.h zram: use zram->lock to protect zram_free_page() in swap free notify path 2013-06-06 12:12:20 -07:00
zram_sysfs.c zram: get rid of lockdep warning 2013-02-05 18:01:24 -08:00
zram.txt zram: force disksize setting before using zram 2013-02-03 17:52:49 -08:00