From: Sasha Levin Date: Wed, 15 Jul 2020 14:32:42 +0000 (-0400) Subject: Fixes for 5.4 X-Git-Tag: v5.7.9~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5985e55fc071681bce711e905ec1fc01f8820e84;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.4 Signed-off-by: Sasha Levin --- diff --git a/queue-5.4/s390-change-s390_kernel_write-return-type-to-match-m.patch b/queue-5.4/s390-change-s390_kernel_write-return-type-to-match-m.patch new file mode 100644 index 00000000000..612eee3a726 --- /dev/null +++ b/queue-5.4/s390-change-s390_kernel_write-return-type-to-match-m.patch @@ -0,0 +1,70 @@ +From 80237836f83832ad3a1dfe6a5b4998d461b81d73 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 29 Apr 2020 10:24:47 -0500 +Subject: s390: Change s390_kernel_write() return type to match memcpy() + +From: Josh Poimboeuf + +[ Upstream commit cb2cceaefb4c4dc28fc27ff1f1b2d258bfc10353 ] + +s390_kernel_write()'s function type is almost identical to memcpy(). +Change its return type to "void *" so they can be used interchangeably. + +Cc: linux-s390@vger.kernel.org +Cc: heiko.carstens@de.ibm.com +Signed-off-by: Josh Poimboeuf +Acked-by: Joe Lawrence +Acked-by: Miroslav Benes +Acked-by: Gerald Schaefer # s390 +Signed-off-by: Jiri Kosina +Signed-off-by: Sasha Levin +--- + arch/s390/include/asm/uaccess.h | 2 +- + arch/s390/mm/maccess.c | 9 ++++++--- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h +index a470f1fa9f2af..324438889fe16 100644 +--- a/arch/s390/include/asm/uaccess.h ++++ b/arch/s390/include/asm/uaccess.h +@@ -276,6 +276,6 @@ static inline unsigned long __must_check clear_user(void __user *to, unsigned lo + } + + int copy_to_user_real(void __user *dest, void *src, unsigned long count); +-void s390_kernel_write(void *dst, const void *src, size_t size); ++void *s390_kernel_write(void *dst, const void *src, size_t size); + + #endif /* __S390_UACCESS_H */ +diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c +index de7ca4b6718f1..22a0be655f27a 100644 +--- a/arch/s390/mm/maccess.c ++++ b/arch/s390/mm/maccess.c +@@ -55,19 +55,22 @@ static notrace long s390_kernel_write_odd(void *dst, const void *src, size_t siz + */ + static DEFINE_SPINLOCK(s390_kernel_write_lock); + +-void notrace s390_kernel_write(void *dst, const void *src, size_t size) ++notrace void *s390_kernel_write(void *dst, const void *src, size_t size) + { ++ void *tmp = dst; + unsigned long flags; + long copied; + + spin_lock_irqsave(&s390_kernel_write_lock, flags); + while (size) { +- copied = s390_kernel_write_odd(dst, src, size); +- dst += copied; ++ copied = s390_kernel_write_odd(tmp, src, size); ++ tmp += copied; + src += copied; + size -= copied; + } + spin_unlock_irqrestore(&s390_kernel_write_lock, flags); ++ ++ return dst; + } + + static int __no_sanitize_address __memcpy_real(void *dest, void *src, size_t count) +-- +2.25.1 + diff --git a/queue-5.4/s390-maccess-add-no-dat-mode-to-kernel_write.patch b/queue-5.4/s390-maccess-add-no-dat-mode-to-kernel_write.patch new file mode 100644 index 00000000000..098f7c7ccca --- /dev/null +++ b/queue-5.4/s390-maccess-add-no-dat-mode-to-kernel_write.patch @@ -0,0 +1,49 @@ +From a8cbe20a761f9b990ad0725af83f70afaf123fea Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 24 Jun 2020 17:39:14 +0200 +Subject: s390/maccess: add no DAT mode to kernel_write + +From: Vasily Gorbik + +[ Upstream commit d6df52e9996dcc2062c3d9c9123288468bb95b52 ] + +To be able to patch kernel code before paging is initialized do plain +memcpy if DAT is off. This is required to enable early jump label +initialization. + +Reviewed-by: Heiko Carstens +Signed-off-by: Vasily Gorbik +Signed-off-by: Heiko Carstens +Signed-off-by: Sasha Levin +--- + arch/s390/mm/maccess.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c +index 22a0be655f27a..1d17413b319a4 100644 +--- a/arch/s390/mm/maccess.c ++++ b/arch/s390/mm/maccess.c +@@ -62,11 +62,15 @@ notrace void *s390_kernel_write(void *dst, const void *src, size_t size) + long copied; + + spin_lock_irqsave(&s390_kernel_write_lock, flags); +- while (size) { +- copied = s390_kernel_write_odd(tmp, src, size); +- tmp += copied; +- src += copied; +- size -= copied; ++ if (!(flags & PSW_MASK_DAT)) { ++ memcpy(dst, src, size); ++ } else { ++ while (size) { ++ copied = s390_kernel_write_odd(tmp, src, size); ++ tmp += copied; ++ src += copied; ++ size -= copied; ++ } + } + spin_unlock_irqrestore(&s390_kernel_write_lock, flags); + +-- +2.25.1 + diff --git a/queue-5.4/series b/queue-5.4/series index b3f011fc480..33f7b1af33c 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -106,3 +106,5 @@ perf-scripts-python-exported-sql-viewer.py-fix-zero-id-in-call-graph-find-result perf-scripts-python-exported-sql-viewer.py-fix-zero-id-in-call-tree-find-result.patch perf-scripts-python-exported-sql-viewer.py-fix-unexpanded-find-result.patch pwm-jz4740-fix-build-failure.patch +s390-change-s390_kernel_write-return-type-to-match-m.patch +s390-maccess-add-no-dat-mode-to-kernel_write.patch