summaryrefslogtreecommitdiff
path: root/fs/proc/kcore.c
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-11-15 21:52:06 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-11-15 21:52:18 +0200
commit6107aa6dc24cc8c196bb18e5b5ec81f8f1a275a8 (patch)
treeef508ed8340c5d6b615c713d1569d851964091f2 /fs/proc/kcore.c
parent298504ed68065a61d0fc1d7969af19ecf2136ac9 (diff)
parent34b1d1174c2c7054c01cfa39d274421d80649386 (diff)
Merge branch 'android-4.4-p' of https://android.googlesource.com/kernel/common into lineage-17.1-caf-msm8998
This brings LA.UM.8.2.r1-07400-sdm660.0 up to date with https://android.googlesource.com/kernel/common/ android-4.4-p at commit: 34b1d1174c2c7 UPSTREAM: arm64: kaslr: Fix up the kernel image alignment Conflicts: scripts/setlocalversion Change-Id: Id2981587a6e92eb10cfdc9b6d13cd4bd2abb5670
Diffstat (limited to 'fs/proc/kcore.c')
-rw-r--r--fs/proc/kcore.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
index 21f198aa0961..107db4f559e0 100644
--- a/fs/proc/kcore.c
+++ b/fs/proc/kcore.c
@@ -507,23 +507,15 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
return -EFAULT;
} else {
if (kern_addr_valid(start)) {
- unsigned long n;
-
/*
* Using bounce buffer to bypass the
* hardened user copy kernel text checks.
*/
- memcpy(buf, (char *) start, tsz);
- n = copy_to_user(buffer, buf, tsz);
- /*
- * We cannot distinguish between fault on source
- * and fault on destination. When this happens
- * we clear too and hope it will trigger the
- * EFAULT again.
- */
- if (n) {
- if (clear_user(buffer + tsz - n,
- n))
+ if (probe_kernel_read(buf, (void *) start, tsz)) {
+ if (clear_user(buffer, tsz))
+ return -EFAULT;
+ } else {
+ if (copy_to_user(buffer, buf, tsz))
return -EFAULT;
}
} else {