--- /dev/null
+From 22a61938ecc1f32cc6ce8221a10e10053e65f64d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 4 Dec 2019 10:59:09 +0530
+Subject: powerpc/pmem: Fix kernel crash due to wrong range value usage in
+ flush_dcache_range
+
+From: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+
+[ Upstream commit 6f4679b956741d2da6ad3ebb738cbe1264ac8781 ]
+
+This patch fix the below kernel crash.
+
+ BUG: Unable to handle kernel data access on read at 0xc000000380000000
+ Faulting instruction address: 0xc00000000008b6f0
+cpu 0x5: Vector: 300 (Data Access) at [c0000000d8587790]
+ pc: c00000000008b6f0: arch_remove_memory+0x150/0x210
+ lr: c00000000008b720: arch_remove_memory+0x180/0x210
+ sp: c0000000d8587a20
+ msr: 800000000280b033
+ dar: c000000380000000
+ dsisr: 40000000
+ current = 0xc0000000d8558600
+ paca = 0xc00000000fff8f00 irqmask: 0x03 irq_happened: 0x01
+ pid = 1220, comm = ndctl
+enter ? for help
+ memunmap_pages+0x33c/0x410
+ devm_action_release+0x30/0x50
+ release_nodes+0x30c/0x3a0
+ device_release_driver_internal+0x178/0x240
+ unbind_store+0x74/0x190
+ drv_attr_store+0x44/0x60
+ sysfs_kf_write+0x74/0xa0
+ kernfs_fop_write+0x1b0/0x260
+ __vfs_write+0x3c/0x70
+ vfs_write+0xe4/0x200
+ ksys_write+0x7c/0x140
+ system_call+0x5c/0x68
+
+Fixes: 076265907cf9 ("powerpc: Chunk calls to flush_dcache_range in arch_*_memory")
+Reported-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
+Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20191204052909.59145-1-aneesh.kumar@linux.ibm.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/powerpc/mm/mem.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
+index 460afa415434..d30a2e6e68b4 100644
+--- a/arch/powerpc/mm/mem.c
++++ b/arch/powerpc/mm/mem.c
+@@ -120,7 +120,7 @@ static void flush_dcache_range_chunked(unsigned long start, unsigned long stop,
+ unsigned long i;
+
+ for (i = start; i < stop; i += chunk) {
+- flush_dcache_range(i, min(stop, start + chunk));
++ flush_dcache_range(i, min(stop, i + chunk));
+ cond_resched();
+ }
+ }
+--
+2.20.1
+