From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Date: Fri, 19 Apr 2013 16:03:02 +0000 (+0200)
Subject: s390/zcore: Fix HSA copy length for last block
X-Git-Tag: firefly_0821_release~3680^2~683^2~14
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=241fd9bcbc10c144531e88b5e3a62bc11090e5e4;p=firefly-linux-kernel-4.4.55.git

s390/zcore: Fix HSA copy length for last block

Currently always one page is copied to a user buffer for the last
HSA block in memcpy_hsa(). Now the correct length is used.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---

diff --git a/drivers/s390/char/zcore.c b/drivers/s390/char/zcore.c
index 1d61a01576d2..22820610022c 100644
--- a/drivers/s390/char/zcore.c
+++ b/drivers/s390/char/zcore.c
@@ -127,7 +127,7 @@ static int memcpy_hsa(void *dest, unsigned long src, size_t count, int mode)
 	}
 	if (mode == TO_USER) {
 		if (copy_to_user((__force __user void*) dest + offs, buf,
-				 PAGE_SIZE))
+				 count - offs))
 			return -EFAULT;
 	} else
 		memcpy(dest + offs, buf, count - offs);