If a page fault occurs while copying the first byte, this function resets one byte before dst. As a consequence, an address could be modified and leaded to kernel crashes if case the modified address was accessed later.
Fixes: b58294ead14c ("maccess: allow architectures to provide kernel probing directly") Cc: stable@vger.kernel.org [5.8] Signed-off-by: Alban Crequy albancrequy@linux.microsoft.com Tested-by: Francis Laniel flaniel@linux.microsoft.com Reviewed-by: Andrew Morton akpm@linux-foundation.org
---
Changes v1 to v2: - add 'cc:stable', 'Fixes:' and review tag - fix my email - rebase on bpf tree and tag for bpf tree --- mm/maccess.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/maccess.c b/mm/maccess.c index 5f4d240f67ec..074f6b086671 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -97,7 +97,7 @@ long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr, long count) return src - unsafe_addr; Efault: pagefault_enable(); - dst[-1] = '\0'; + dst[0] = '\0'; return -EFAULT; }