From 9cf3b3e848022d86003ec8ef8ae2ce54ff9f025c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 23 Jun 2020 10:00:42 +0200 Subject: [PATCH] 4.14-stable patches added patches: drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch s390-fix-syscall_get_error-for-compat-processes.patch --- ...ocal-timestamp-in-the-gen9-cmdparser.patch | 46 +++++++++++++++ ...scall_get_error-for-compat-processes.patch | 56 +++++++++++++++++++ queue-4.14/series | 2 + 3 files changed, 104 insertions(+) create mode 100644 queue-4.14/drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch create mode 100644 queue-4.14/s390-fix-syscall_get_error-for-compat-processes.patch diff --git a/queue-4.14/drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch b/queue-4.14/drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch new file mode 100644 index 00000000000..0c160daa0d1 --- /dev/null +++ b/queue-4.14/drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch @@ -0,0 +1,46 @@ +From 273500ae71711c040d258a7b3f4b6f44c368fff2 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 1 Jun 2020 17:19:42 +0100 +Subject: drm/i915: Whitelist context-local timestamp in the gen9 cmdparser + +From: Chris Wilson + +commit 273500ae71711c040d258a7b3f4b6f44c368fff2 upstream. + +Allow batch buffers to read their own _local_ cumulative HW runtime of +their logical context. + +Fixes: 0f2f39758341 ("drm/i915: Add gen9 BCS cmdparsing") +Signed-off-by: Chris Wilson +Cc: Mika Kuoppala +Cc: # v5.4+ +Reviewed-by: Mika Kuoppala +Link: https://patchwork.freedesktop.org/patch/msgid/20200601161942.30854-1-chris@chris-wilson.co.uk +(cherry picked from commit f9496520df11de00fbafc3cbd693b9570d600ab3) +Signed-off-by: Joonas Lahtinen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_cmd_parser.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/gpu/drm/i915/i915_cmd_parser.c ++++ b/drivers/gpu/drm/i915/i915_cmd_parser.c +@@ -570,6 +570,9 @@ struct drm_i915_reg_descriptor { + #define REG32(_reg, ...) \ + { .addr = (_reg), __VA_ARGS__ } + ++#define REG32_IDX(_reg, idx) \ ++ { .addr = _reg(idx) } ++ + /* + * Convenience macro for adding 64-bit registers. + * +@@ -667,6 +670,7 @@ static const struct drm_i915_reg_descrip + REG64_IDX(RING_TIMESTAMP, BSD_RING_BASE), + REG32(BCS_SWCTRL), + REG64_IDX(RING_TIMESTAMP, BLT_RING_BASE), ++ REG32_IDX(RING_CTX_TIMESTAMP, BLT_RING_BASE), + REG64_IDX(BCS_GPR, 0), + REG64_IDX(BCS_GPR, 1), + REG64_IDX(BCS_GPR, 2), diff --git a/queue-4.14/s390-fix-syscall_get_error-for-compat-processes.patch b/queue-4.14/s390-fix-syscall_get_error-for-compat-processes.patch new file mode 100644 index 00000000000..aecdc39abf2 --- /dev/null +++ b/queue-4.14/s390-fix-syscall_get_error-for-compat-processes.patch @@ -0,0 +1,56 @@ +From b3583fca5fb654af2cfc1c08259abb9728272538 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Tue, 2 Jun 2020 21:00:51 +0300 +Subject: s390: fix syscall_get_error for compat processes + +From: Dmitry V. Levin + +commit b3583fca5fb654af2cfc1c08259abb9728272538 upstream. + +If both the tracer and the tracee are compat processes, and gprs[2] +is assigned a value by __poke_user_compat, then the higher 32 bits +of gprs[2] are cleared, IS_ERR_VALUE() always returns false, and +syscall_get_error() always returns 0. + +Fix the implementation by sign-extending the value for compat processes +the same way as x86 implementation does. + +The bug was exposed to user space by commit 201766a20e30f ("ptrace: add +PTRACE_GET_SYSCALL_INFO request") and detected by strace test suite. + +This change fixes strace syscall tampering on s390. + +Link: https://lkml.kernel.org/r/20200602180051.GA2427@altlinux.org +Fixes: 753c4dd6a2fa2 ("[S390] ptrace changes") +Cc: Elvira Khabirova +Cc: stable@vger.kernel.org # v2.6.28+ +Signed-off-by: Dmitry V. Levin +Signed-off-by: Heiko Carstens +Signed-off-by: Vasily Gorbik +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/include/asm/syscall.h | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/arch/s390/include/asm/syscall.h ++++ b/arch/s390/include/asm/syscall.h +@@ -41,7 +41,17 @@ static inline void syscall_rollback(stru + static inline long syscall_get_error(struct task_struct *task, + struct pt_regs *regs) + { +- return IS_ERR_VALUE(regs->gprs[2]) ? regs->gprs[2] : 0; ++ unsigned long error = regs->gprs[2]; ++#ifdef CONFIG_COMPAT ++ if (test_tsk_thread_flag(task, TIF_31BIT)) { ++ /* ++ * Sign-extend the value so (int)-EFOO becomes (long)-EFOO ++ * and will match correctly in comparisons. ++ */ ++ error = (long)(int)error; ++ } ++#endif ++ return IS_ERR_VALUE(error) ? error : 0; + } + + static inline long syscall_get_return_value(struct task_struct *task, diff --git a/queue-4.14/series b/queue-4.14/series index ccab6857e2c..321a7f7b94e 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -1,3 +1,5 @@ +s390-fix-syscall_get_error-for-compat-processes.patch +drm-i915-whitelist-context-local-timestamp-in-the-gen9-cmdparser.patch power-supply-bq24257_charger-replace-depends-on-regm.patch clk-sunxi-fix-incorrect-usage-of-round_down.patch i2c-piix4-detect-secondary-smbus-controller-on-amd-a.patch -- 2.47.3