From: Greg Kroah-Hartman Date: Fri, 25 Mar 2022 15:00:24 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.9.309~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fd9f84fa6305a5bca1dddbcc45109b40bff3b867;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: nds32-fix-access_ok-checks-in-get-put_user.patch --- diff --git a/queue-4.19/nds32-fix-access_ok-checks-in-get-put_user.patch b/queue-4.19/nds32-fix-access_ok-checks-in-get-put_user.patch new file mode 100644 index 00000000000..2bc27a57fd5 --- /dev/null +++ b/queue-4.19/nds32-fix-access_ok-checks-in-get-put_user.patch @@ -0,0 +1,75 @@ +From 8926d88ced46700bf6117ceaf391480b943ea9f4 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Mon, 14 Feb 2022 15:48:14 +0100 +Subject: nds32: fix access_ok() checks in get/put_user + +From: Arnd Bergmann + +commit 8926d88ced46700bf6117ceaf391480b943ea9f4 upstream. + +The get_user()/put_user() functions are meant to check for +access_ok(), while the __get_user()/__put_user() functions +don't. + +This broke in 4.19 for nds32, when it gained an extraneous +check in __get_user(), but lost the check it needs in +__put_user(). + +Fixes: 487913ab18c2 ("nds32: Extract the checking and getting pointer to a macro") +Cc: stable@vger.kernel.org @ v4.19+ +Reviewed-by: Christoph Hellwig +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman +--- + arch/nds32/include/asm/uaccess.h | 22 +++++++++++++++++----- + 1 file changed, 17 insertions(+), 5 deletions(-) + +--- a/arch/nds32/include/asm/uaccess.h ++++ b/arch/nds32/include/asm/uaccess.h +@@ -75,9 +75,7 @@ static inline void set_fs(mm_segment_t f + * versions are void (ie, don't return a value as such). + */ + +-#define get_user __get_user \ +- +-#define __get_user(x, ptr) \ ++#define get_user(x, ptr) \ + ({ \ + long __gu_err = 0; \ + __get_user_check((x), (ptr), __gu_err); \ +@@ -90,6 +88,14 @@ static inline void set_fs(mm_segment_t f + (void)0; \ + }) + ++#define __get_user(x, ptr) \ ++({ \ ++ long __gu_err = 0; \ ++ const __typeof__(*(ptr)) __user *__p = (ptr); \ ++ __get_user_err((x), __p, (__gu_err)); \ ++ __gu_err; \ ++}) ++ + #define __get_user_check(x, ptr, err) \ + ({ \ + const __typeof__(*(ptr)) __user *__p = (ptr); \ +@@ -170,12 +176,18 @@ do { \ + : "r"(addr), "i"(-EFAULT) \ + : "cc") + +-#define put_user __put_user \ ++#define put_user(x, ptr) \ ++({ \ ++ long __pu_err = 0; \ ++ __put_user_check((x), (ptr), __pu_err); \ ++ __pu_err; \ ++}) + + #define __put_user(x, ptr) \ + ({ \ + long __pu_err = 0; \ +- __put_user_err((x), (ptr), __pu_err); \ ++ __typeof__(*(ptr)) __user *__p = (ptr); \ ++ __put_user_err((x), __p, __pu_err); \ + __pu_err; \ + }) + diff --git a/queue-4.19/series b/queue-4.19/series index adeefab6549..e4c4b5215df 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -17,3 +17,4 @@ acpi-battery-add-device-hid-and-quirk-for-microsoft-surface-go-3.patch acpi-video-force-backlight-native-for-clevo-nl5xru-and-nl5xnu.patch crypto-qat-disable-registration-of-algorithms.patch mac80211-fix-potential-double-free-on-mesh-join.patch +nds32-fix-access_ok-checks-in-get-put_user.patch