From a6ee214dc9a7889103cd6c20700d731ef6e17c6d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 18 Nov 2014 09:23:00 -0800 Subject: [PATCH] 3.14-stable patches added patches: zram-avoid-kunmap_atomic-of-a-null-pointer.patch --- queue-3.14/series | 1 + ...void-kunmap_atomic-of-a-null-pointer.patch | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 queue-3.14/zram-avoid-kunmap_atomic-of-a-null-pointer.patch diff --git a/queue-3.14/series b/queue-3.14/series index 0ffff676c12..ea617d601f8 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -15,3 +15,4 @@ sunvdc-don-t-call-vd_op_get_vtoc.patch sparc64-fix-crashes-in-schizo_pcierr_intr_other.patch sparc64-do-irq_-enter-exit-around-generic_smp_call_function.patch sparc32-implement-xchg-and-atomic_xchg-using-atomic_hash-locks.patch +zram-avoid-kunmap_atomic-of-a-null-pointer.patch diff --git a/queue-3.14/zram-avoid-kunmap_atomic-of-a-null-pointer.patch b/queue-3.14/zram-avoid-kunmap_atomic-of-a-null-pointer.patch new file mode 100644 index 00000000000..8b2eb762feb --- /dev/null +++ b/queue-3.14/zram-avoid-kunmap_atomic-of-a-null-pointer.patch @@ -0,0 +1,42 @@ +From c406515239376fc93a30d5d03192182160cbd3fb Mon Sep 17 00:00:00 2001 +From: Weijie Yang +Date: Thu, 13 Nov 2014 15:19:05 -0800 +Subject: zram: avoid kunmap_atomic() of a NULL pointer + +From: Weijie Yang + +commit c406515239376fc93a30d5d03192182160cbd3fb upstream. + +zram could kunmap_atomic() a NULL pointer in a rare situation: a zram +page becomes a full-zeroed page after a partial write io. The current +code doesn't handle this case and performs kunmap_atomic() on a NULL +pointer, which panics the kernel. + +This patch fixes this issue. + +Signed-off-by: Weijie Yang +Cc: Sergey Senozhatsky +Cc: Dan Streetman +Cc: Nitin Gupta +Cc: Weijie Yang +Acked-by: Jerome Marchand +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/block/zram/zram_drv.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/block/zram/zram_drv.c ++++ b/drivers/block/zram/zram_drv.c +@@ -447,7 +447,8 @@ static int zram_bvec_write(struct zram * + } + + if (page_zero_filled(uncmem)) { +- kunmap_atomic(user_mem); ++ if (user_mem) ++ kunmap_atomic(user_mem); + /* Free memory associated with this sector now. */ + write_lock(&zram->meta->tb_lock); + zram_free_page(zram, index); -- 2.47.3