From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6584148BD56; Tue, 7 Jul 2026 19:07:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783451245; cv=none; b=FnVFvsQFasZwV69f4to1LS0uYHO+WoZmdkUYibvZP4lo25BGRmRNP4ONQn/lQzYwbMkOz+gxMUW3OiFYImDOUgFxMZtUD5Et/Q5z+AnY4App5NCOvFDGnEaa/tRfAshRDvwV6xFjzt+LsdmGyxaCY9xt2dzG/olviCivQcG97MA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783451245; c=relaxed/simple; bh=qidwgz2JI9Io+EYfmSyqNxasGkS+3VHzmC5tYP+sG+o=; h=Date:Message-ID:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=XQ+x6nqglB+XsHm6xF4KiV6dyhEopIYa1NQwDoKs+Wq8F7YgucCCXJSHt9nxL9bLu41YnOyezZSjOn4WZ85XwMuTt9DIlfs3JGgHevl1jZYZR+AXm+KSw7hMk+31uMlNU9It4wltvQSL0OAtIUNANiiKkV/rphAODPdwti67vDw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AHEhZEMB; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AHEhZEMB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 959C01F00A3E; Tue, 7 Jul 2026 19:07:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783451232; bh=ujg63nFpNppD6hh8ErFLF1J5JX2ZfpeEoGN6ZrinWc0=; h=Date:From:To:Cc:Subject:References; b=AHEhZEMBYzBtdLcDTyhlS45Q7S7ZwTjKIqiJzRbhD5/XAbHDISjmwksUK82ZNX4eN v/56KPMLh+ap7XlsQOg/BTaFcC0r6cCqimRsKEEjnM7HqpHCJ0wTkRT4YpPRqksdHy hbur5BBOkf2MqLhVXO+OEJPygToMV0GfcDHqGyXAo5xm9el2SAov1vxRwDLsZ9mDTO 8DMadvH3j+KUyVnLd3M9IfC7bg8qqqSHv1wejHUyEH+mIuHPWHU4dWWsyjmGqtk7PJ 8vvvohEhLbaJuT/nrhqQWxuMcj0mhqi8CGIjfadl6DsadWHk3iOaJCLltrwK6NFjAk oac7QSSvNoGEw== Date: Tue, 07 Jul 2026 21:07:09 +0200 Message-ID: <20260707190254.603111179@kernel.org> User-Agent: quilt/0.69 From: Thomas Gleixner To: LKML Cc: Peter Zijlstra , =?UTF-8?q?Michal=20Such=C3=A1nek?= , Jonathan Corbet , Arnd Bergmann , Mark Rutland , Huacai Chen , Michael Ellerman , Shrikanth Hegde , Paul Walmsley , Palmer Dabbelt , Sven Schnelle , linux-doc@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, Kees Cook , x86@kernel.org, Jinjie Ruan , Andy Lutomirski , Oleg Nesterov , Richard Henderson , Russell King , Catalin Marinas , Guo Ren , Geert Uytterhoeven , Thomas Bogendoerfer , Helge Deller , Yoshinori Sato , Richard Weinberger , Chris Zankel , linux-arm-kernel@lists.infradead.org, linux-alpha@vger.kernel.org, linux-csky@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org, Vineet Gupta , Will Deacon , Brian Cain , Michal Simek , Dinh Nguyen , "David S. Miller" , Andreas Larsson , linux-snps-arc@lists.infradead.org, linux-hexagon@vger.kernel.org, linux-openrisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org Subject: [patch 18/18] entry, treewide: Make syscall_enter_from_user_mode[_work]() indicate syscall execution References: <20260707181957.433213175@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 From: Michal Suchánek The return values of syscall_enter_from_user_mode[_work]() are non-intuitive. Both functions return the syscall number which should be invoked by the architecture specific syscall entry code. The returned number can be: - the unmodified syscall number which was handed in by the caller - a modified syscall number (ptrace, seccomp, trace/probe/bpf) That has an additional twist. If the return value is -1L then the caller is not allowed to modify the return value as that indicates that the modifying entity requests to abort the syscall and set the return value already. That can obviously not be differentiated from a syscall which handed in -1 as syscall number. The established way to deal with that is: set_return_value(regs, -ENOSYS); nr = syscall_enter_from_user_mode(regs, nr); if ((unsigned)nr < SYSCALLNR_MAX) handle_syscall(regs, nr); else if (nr != -1) set_return_value(regs, -ENOSYS); The latter is obviously redundant, but that's just a leftover of the historical evolution of this code. S390 has some special requirements here, which can be avoided when the return value is not ambiguous. Now that the functions which modify the syscall number and want to abort are converted to indicate that with a boolean return value, it's obvious to hand this through to the callers. Rework syscall_enter_from_user_mode[_work]) so they take a pointer to the syscall number and return a boolean, which indicates whether the syscall should be handled or not. That's not only more intuitive, it also results in slightly denser executable code on x86 at least, but perf results are neutral and within the noise. [ tglx: Adopted it to the changes in the generic entry code, fixed up the 32-bit fallout and rewrote change log ] Signed-off-by: Michal Suchánek Signed-off-by: Thomas Gleixner Cc: Jonathan Corbet Cc: Arnd Bergmann Cc: Mark Rutland Cc: Huacai Chen Cc: Michael Ellerman Cc: Shrikanth Hegde Cc: Paul Walmsley Cc: Palmer Dabbelt Cc: Sven Schnelle Cc: linux-doc@vger.kernel.org Cc: loongarch@lists.linux.dev Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org --- Documentation/core-api/entry.rst | 18 +++++++++++------- arch/loongarch/kernel/syscall.c | 14 +++++++------- arch/powerpc/kernel/syscall.c | 3 ++- arch/riscv/kernel/traps.c | 11 +++++------ arch/s390/kernel/syscall.c | 7 +++++-- arch/x86/entry/syscall_32.c | 25 ++++++++++++------------- arch/x86/entry/syscall_64.c | 12 ++++++------ include/linux/entry-common.h | 12 +++++------- 8 files changed, 53 insertions(+), 49 deletions(-) --- a/Documentation/core-api/entry.rst +++ b/Documentation/core-api/entry.rst @@ -68,16 +68,20 @@ low-level C code must not be instrumente noinstr void syscall(struct pt_regs *regs, int nr) { arch_syscall_enter(regs); - nr = syscall_enter_from_user_mode_randomize_stack(regs, nr); - - instrumentation_begin(); - if (!invoke_syscall(regs, nr) && nr != -1) - result_reg(regs) = __sys_ni_syscall(regs); - instrumentation_end(); - + result_reg(regs) = -ENOSYS; + if (syscall_enter_from_user_mode_randomize_stack(regs, &nr)) { + instrumentation_begin(); + if (!invoke_syscall(regs, nr)) + result_reg(regs) = __sys_ni_syscall(regs); + instrumentation_end(); + } syscall_exit_to_user_mode(regs); } +It is required that either the low level assembly code or the syscall +function sets the result register to -ENOSYS before invoking the generic +code. + syscall_enter_from_user_mode_randomize_stack() first invokes enter_from_user_mode_randomize_stack() which establishes state in the following order: --- a/arch/loongarch/kernel/syscall.c +++ b/arch/loongarch/kernel/syscall.c @@ -57,8 +57,8 @@ typedef long (*sys_call_fn)(unsigned lon void noinstr __no_stack_protector do_syscall(struct pt_regs *regs) { - unsigned long nr; sys_call_fn syscall_fn; + unsigned long nr; nr = regs->regs[11]; /* Set for syscall restarting */ @@ -69,12 +69,12 @@ void noinstr __no_stack_protector do_sys regs->orig_a0 = regs->regs[4]; regs->regs[4] = -ENOSYS; - nr = syscall_enter_from_user_mode_randomize_stack(regs, nr); - - if (nr < NR_syscalls) { - syscall_fn = sys_call_table[array_index_nospec(nr, NR_syscalls)]; - regs->regs[4] = syscall_fn(regs->orig_a0, regs->regs[5], regs->regs[6], - regs->regs[7], regs->regs[8], regs->regs[9]); + if (likely(syscall_enter_from_user_mode_randomize_stack(regs, &nr))) { + if (nr < NR_syscalls) { + syscall_fn = sys_call_table[array_index_nospec(nr, NR_syscalls)]; + regs->regs[4] = syscall_fn(regs->orig_a0, regs->regs[5], regs->regs[6], + regs->regs[7], regs->regs[8], regs->regs[9]); + } } syscall_exit_to_user_mode(regs); --- a/arch/powerpc/kernel/syscall.c +++ b/arch/powerpc/kernel/syscall.c @@ -18,7 +18,8 @@ notrace long system_call_exception(struc long ret; syscall_fn f; - r0 = syscall_enter_from_user_mode_randomize_stack(regs, r0); + if (unlikely(!syscall_enter_from_user_mode_randomize_stack(regs, &r0)) + return syscall_get_error(current, regs); if (unlikely(r0 >= NR_syscalls)) { if (unlikely(trap_is_unsupported_scv(regs))) { --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c @@ -332,13 +332,12 @@ void do_trap_ecall_u(struct pt_regs *reg riscv_v_vstate_discard(regs); - syscall = syscall_enter_from_user_mode_randomize_stack(regs, syscall); - - if (syscall >= 0 && syscall < NR_syscalls) { - syscall = array_index_nospec(syscall, NR_syscalls); - syscall_handler(regs, syscall); + if (syscall_enter_from_user_mode_randomize_stack(regs, &syscall)) { + if (syscall >= 0 && syscall < NR_syscalls) { + syscall = array_index_nospec(syscall, NR_syscalls); + syscall_handler(regs, syscall); + } } - syscall_exit_to_user_mode(regs); } else { irqentry_state_t state = irqentry_nmi_enter(regs); --- a/arch/s390/kernel/syscall.c +++ b/arch/s390/kernel/syscall.c @@ -96,6 +96,7 @@ SYSCALL_DEFINE0(ni_syscall) void noinstr __do_syscall(struct pt_regs *regs, int per_trap) { unsigned long nr; + bool permit; enter_from_user_mode_randomize_stack(regs); @@ -121,7 +122,9 @@ void noinstr __do_syscall(struct pt_regs regs->psw.addr = current->restart_block.arch_data; current->restart_block.arch_data = 1; } - nr = syscall_enter_from_user_mode_work(regs, nr); + + permit = syscall_enter_from_user_mode_work(regs, &nr); + /* * In the s390 ptrace ABI, both the syscall number and the return value * use gpr2. However, userspace puts the syscall number either in the @@ -129,7 +132,7 @@ void noinstr __do_syscall(struct pt_regs * work, the ptrace code sets PIF_SYSCALL_RET_SET, which is checked here * and if set, the syscall will be skipped. */ - if (unlikely(test_and_clear_pt_regs_flag(regs, PIF_SYSCALL_RET_SET))) + if (unlikely(test_and_clear_pt_regs_flag(regs, PIF_SYSCALL_RET_SET) || !permit)) goto out; regs->gprs[2] = -ENOSYS; if (likely(nr < NR_syscalls)) { --- a/arch/x86/entry/syscall_32.c +++ b/arch/x86/entry/syscall_32.c @@ -161,8 +161,9 @@ static __always_inline bool int80_is_ext nr = syscall_32_enter(regs); local_irq_enable(); - nr = syscall_enter_from_user_mode_work(regs, nr); - do_syscall_32_irqs_on(regs, nr); + + if (likely(syscall_enter_from_user_mode_work(regs, &nr))) + do_syscall_32_irqs_on(regs, nr); instrumentation_end(); syscall_exit_to_user_mode(regs); @@ -223,8 +224,8 @@ DEFINE_FREDENTRY_RAW(int80_emulation) nr = syscall_32_enter(regs); local_irq_enable(); - nr = syscall_enter_from_user_mode_work(regs, nr); - do_syscall_32_irqs_on(regs, nr); + if (likely(syscall_enter_from_user_mode_work(regs, &nr))) + do_syscall_32_irqs_on(regs, nr); instrumentation_end(); syscall_exit_to_user_mode(regs); @@ -243,13 +244,13 @@ DEFINE_FREDENTRY_RAW(int80_emulation) * orig_ax, the int return value truncates it. This matches * the semantics of syscall_get_nr(). */ - nr = syscall_enter_from_user_mode_randomize_stack(regs, nr); - - instrumentation_begin(); + if (likely(syscall_enter_from_user_mode_randomize_stack(regs, &nr))) { + instrumentation_begin(); - do_syscall_32_irqs_on(regs, nr); + do_syscall_32_irqs_on(regs, nr); - instrumentation_end(); + instrumentation_end(); + } syscall_exit_to_user_mode(regs); } #endif /* !CONFIG_IA32_EMULATION */ @@ -286,10 +287,8 @@ static noinstr bool __do_fast_syscall_32 return false; } - nr = syscall_enter_from_user_mode_work(regs, nr); - - /* Now this is just like a normal syscall. */ - do_syscall_32_irqs_on(regs, nr); + if (likely(syscall_enter_from_user_mode_work(regs, &nr))) + do_syscall_32_irqs_on(regs, nr); instrumentation_end(); syscall_exit_to_user_mode(regs); --- a/arch/x86/entry/syscall_64.c +++ b/arch/x86/entry/syscall_64.c @@ -78,14 +78,14 @@ static __always_inline void do_syscall_x /* Returns true to return using SYSRET, or false to use IRET */ __visible noinstr bool do_syscall_64(struct pt_regs *regs, long nr) { - nr = syscall_enter_from_user_mode_randomize_stack(regs, nr); + if (likely(syscall_enter_from_user_mode_randomize_stack(regs, &nr))) { + instrumentation_begin(); - instrumentation_begin(); + if (!do_syscall_x64(regs, nr)) + do_syscall_x32(regs, nr); - if (!do_syscall_x64(regs, nr)) - do_syscall_x32(regs, nr); - - instrumentation_end(); + instrumentation_end(); + } syscall_exit_to_user_mode(regs); /* --- a/include/linux/entry-common.h +++ b/include/linux/entry-common.h @@ -71,7 +71,7 @@ static inline void syscall_enter_audit(s } } -static __always_inline bool syscall_trace_enter(struct pt_regs *regs, unsigned long work, +static __always_inline long syscall_trace_enter(struct pt_regs *regs, unsigned long work, long *syscall) { /* @@ -141,16 +141,14 @@ static __always_inline bool syscall_trac * ptrace_report_syscall_permit_entry(), __seccomp_permit_syscall(), trace_sys_enter() * 2) Invocation of audit_syscall_entry() */ -static __always_inline long syscall_enter_from_user_mode_work(struct pt_regs *regs, long syscall) +static __always_inline bool syscall_enter_from_user_mode_work(struct pt_regs *regs, long *syscall) { unsigned long work = READ_ONCE(current_thread_info()->syscall_work); - if (work & SYSCALL_WORK_ENTER) { - if (!syscall_trace_enter(regs, work, &syscall)) - return -1L; - } + if (unlikely(work & SYSCALL_WORK_ENTER)) + return syscall_trace_enter(regs, work, syscall); - return syscall; + return true; } /** From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C39DFC43458 for ; Tue, 7 Jul 2026 19:08:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:Subject:Cc:To: From:Message-ID:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=CkVlLKRSBvYoBdXVLsYmNrOwHnbg3p27boywunxQizQ=; b=mAtIai5Ssg3gVN i256MzrPiuVudorBx5O1GM9CKOQAUNGJyfNw7QWRbhBysv2a8cYCovsgbX6syXcylvftdAb690SO4 cIUkUzFymfoRqtJ2JSykiSKUD0u+osbq/2lgeG5pIeXe1X/NMY5x3XyNrSWMJxNWukuxCkYwbf+L9 klBtlVTf6hszMIKxbXS86/ZynGSol2eQP7THa3k6DogsRSKBpjuFnC74fDpgFUNRwmN3AjYpeZMZ5 49YDvzXlyrnpkmVuVICliuBmxu4BT1663GYqcyykF1T2K3IHoKpQQR3EtmbC7UneywXo1ED1faWee EzPxziA1KSXAUMUGVWzA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1whB99-0000000Fihe-3Mtk; Tue, 07 Jul 2026 19:07:56 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1whB8T-0000000Fhmy-1Qhl; Tue, 07 Jul 2026 19:07:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id B1DC26138D; Tue, 7 Jul 2026 19:07:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 959C01F00A3E; Tue, 7 Jul 2026 19:07:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783451232; bh=ujg63nFpNppD6hh8ErFLF1J5JX2ZfpeEoGN6ZrinWc0=; h=Date:From:To:Cc:Subject:References; b=AHEhZEMBYzBtdLcDTyhlS45Q7S7ZwTjKIqiJzRbhD5/XAbHDISjmwksUK82ZNX4eN v/56KPMLh+ap7XlsQOg/BTaFcC0r6cCqimRsKEEjnM7HqpHCJ0wTkRT4YpPRqksdHy hbur5BBOkf2MqLhVXO+OEJPygToMV0GfcDHqGyXAo5xm9el2SAov1vxRwDLsZ9mDTO 8DMadvH3j+KUyVnLd3M9IfC7bg8qqqSHv1wejHUyEH+mIuHPWHU4dWWsyjmGqtk7PJ 8vvvohEhLbaJuT/nrhqQWxuMcj0mhqi8CGIjfadl6DsadWHk3iOaJCLltrwK6NFjAk oac7QSSvNoGEw== Date: Tue, 07 Jul 2026 21:07:09 +0200 Message-ID: <20260707190254.603111179@kernel.org> User-Agent: quilt/0.69 From: Thomas Gleixner To: LKML Cc: Peter Zijlstra , =?UTF-8?q?Michal=20Such=C3=A1nek?= , Jonathan Corbet , Arnd Bergmann , Mark Rutland , Huacai Chen , Michael Ellerman , Shrikanth Hegde , Paul Walmsley , Palmer Dabbelt , Sven Schnelle , linux-doc@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, Kees Cook , x86@kernel.org, Jinjie Ruan , Andy Lutomirski , Oleg Nesterov , Richard Henderson , Russell King , Catalin Marinas , Guo Ren , Geert Uytterhoeven , Thomas Bogendoerfer , Helge Deller , Yoshinori Sato , Richard Weinberger , Chris Zankel , linux-arm-kernel@lists.infradead.org, linux-alpha@vger.kernel.org, linux-csky@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org, Vineet Gupta , Will Deacon , Brian Cain , Michal Simek , Dinh Nguyen , "David S. Miller" , Andreas Larsson , linux-snps-arc@lists.infradead.org, linux-hexagon@vger.kernel.org, linux-openrisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org Subject: [patch 18/18] entry, treewide: Make syscall_enter_from_user_mode[_work]() indicate syscall execution References: <20260707181957.433213175@kernel.org> MIME-Version: 1.0 X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogTWljaGFsIFN1Y2jDoW5layA8bXN1Y2hhbmVrQHN1c2UuZGU+CgpUaGUgcmV0dXJuIHZh bHVlcyBvZiBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlW193b3JrXSgpIGFyZQpub24taW50 dWl0aXZlLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4gdGhlIHN5c2NhbGwgbnVtYmVyIHdoaWNoIHNo b3VsZCBiZQppbnZva2VkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgc3lzY2FsbCBlbnRy eSBjb2RlLiBUaGUgcmV0dXJuZWQKbnVtYmVyIGNhbiBiZToKCiAgLSB0aGUgdW5tb2RpZmllZCBz eXNjYWxsIG51bWJlciB3aGljaCB3YXMgaGFuZGVkIGluIGJ5IHRoZSBjYWxsZXIKCiAgLSBhIG1v ZGlmaWVkIHN5c2NhbGwgbnVtYmVyIChwdHJhY2UsIHNlY2NvbXAsIHRyYWNlL3Byb2JlL2JwZikK ClRoYXQgaGFzIGFuIGFkZGl0aW9uYWwgdHdpc3QuIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgLTFM IHRoZW4gdGhlIGNhbGxlciBpcwpub3QgYWxsb3dlZCB0byBtb2RpZnkgdGhlIHJldHVybiB2YWx1 ZSBhcyB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBtb2RpZnlpbmcKZW50aXR5IHJlcXVlc3RzIHRv IGFib3J0IHRoZSBzeXNjYWxsIGFuZCBzZXQgdGhlIHJldHVybiB2YWx1ZSBhbHJlYWR5LiBUaGF0 CmNhbiBvYnZpb3VzbHkgbm90IGJlIGRpZmZlcmVudGlhdGVkIGZyb20gYSBzeXNjYWxsIHdoaWNo IGhhbmRlZCBpbiAtMSBhcwpzeXNjYWxsIG51bWJlci4KClRoZSBlc3RhYmxpc2hlZCB3YXkgdG8g ZGVhbCB3aXRoIHRoYXQgaXM6CgogICAgc2V0X3JldHVybl92YWx1ZShyZWdzLCAtRU5PU1lTKTsK ICAgIG5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZShyZWdzLCBucik7CiAgICBpZiAo KHVuc2lnbmVkKW5yIDwgU1lTQ0FMTE5SX01BWCkKICAgIAloYW5kbGVfc3lzY2FsbChyZWdzLCBu cik7CiAgICBlbHNlIGlmIChuciAhPSAtMSkKICAgIAlzZXRfcmV0dXJuX3ZhbHVlKHJlZ3MsIC1F Tk9TWVMpOwoKVGhlIGxhdHRlciBpcyBvYnZpb3VzbHkgcmVkdW5kYW50LCBidXQgdGhhdCdzIGp1 c3QgYSBsZWZ0b3ZlciBvZiB0aGUKaGlzdG9yaWNhbCBldm9sdXRpb24gb2YgdGhpcyBjb2RlLiBT MzkwIGhhcyBzb21lIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGhlcmUsCndoaWNoIGNhbiBiZSBhdm9p ZGVkIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgYW1iaWd1b3VzLgoKTm93IHRoYXQgdGhl IGZ1bmN0aW9ucyB3aGljaCBtb2RpZnkgdGhlIHN5c2NhbGwgbnVtYmVyIGFuZCB3YW50IHRvIGFi b3J0CmFyZSBjb252ZXJ0ZWQgdG8gaW5kaWNhdGUgdGhhdCB3aXRoIGEgYm9vbGVhbiByZXR1cm4g dmFsdWUsIGl0J3Mgb2J2aW91cyB0bwpoYW5kIHRoaXMgdGhyb3VnaCB0byB0aGUgY2FsbGVycy4K ClJld29yayBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlW193b3JrXSkgc28gdGhleSB0YWtl IGEgcG9pbnRlciB0byB0aGUKc3lzY2FsbCBudW1iZXIgYW5kIHJldHVybiBhIGJvb2xlYW4sIHdo aWNoIGluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXNjYWxsCnNob3VsZCBiZSBoYW5kbGVkIG9yIG5v dC4KClRoYXQncyBub3Qgb25seSBtb3JlIGludHVpdGl2ZSwgaXQgYWxzbyByZXN1bHRzIGluIHNs aWdodGx5IGRlbnNlcgpleGVjdXRhYmxlIGNvZGUgb24geDg2IGF0IGxlYXN0LCBidXQgcGVyZiBy ZXN1bHRzIGFyZSBuZXV0cmFsIGFuZCB3aXRoaW4KdGhlIG5vaXNlLgoKWyB0Z2x4OiBBZG9wdGVk IGl0IHRvIHRoZSBjaGFuZ2VzIGluIHRoZSBnZW5lcmljIGVudHJ5IGNvZGUsIGZpeGVkIHVwIHRo ZQogIAkzMi1iaXQgZmFsbG91dCBhbmQgcmV3cm90ZSBjaGFuZ2UgbG9nIF0KClNpZ25lZC1vZmYt Ynk6IE1pY2hhbCBTdWNow6FuZWsgPG1zdWNoYW5la0BzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBU aG9tYXMgR2xlaXhuZXIgPHRnbHhAa2VybmVsLm9yZz4KQ2M6IEpvbmF0aGFuIENvcmJldCA8Y29y YmV0QGx3bi5uZXQ+CkNjOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpDYzogTWFyayBS dXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KQ2M6IEh1YWNhaSBDaGVuIDxjaGVuaHVhY2Fp QGtlcm5lbC5vcmc+CkNjOiBNaWNoYWVsIEVsbGVybWFuIDxtcGVAZWxsZXJtYW4uaWQuYXU+CkNj OiBTaHJpa2FudGggSGVnZGUgPHNzaGVnZGVAbGludXguaWJtLmNvbT4KQ2M6IFBhdWwgV2FsbXNs ZXkgPHBqd0BrZXJuZWwub3JnPgpDYzogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNv bT4KQ2M6IFN2ZW4gU2NobmVsbGUgPHN2ZW5zQGxpbnV4LmlibS5jb20+CkNjOiBsaW51eC1kb2NA dmdlci5rZXJuZWwub3JnCkNjOiBsb29uZ2FyY2hAbGlzdHMubGludXguZGV2CkNjOiBsaW51eHBw Yy1kZXZAbGlzdHMub3psYWJzLm9yZwpDYzogbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9y ZwpDYzogbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKLS0tCiBEb2N1bWVudGF0aW9uL2NvcmUt YXBpL2VudHJ5LnJzdCB8ICAgMTggKysrKysrKysrKystLS0tLS0tCiBhcmNoL2xvb25nYXJjaC9r ZXJuZWwvc3lzY2FsbC5jICB8ICAgMTQgKysrKysrKy0tLS0tLS0KIGFyY2gvcG93ZXJwYy9rZXJu ZWwvc3lzY2FsbC5jICAgIHwgICAgMyArKy0KIGFyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMgICAg ICAgIHwgICAxMSArKysrKy0tLS0tLQogYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxsLmMgICAgICAg fCAgICA3ICsrKysrLS0KIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxfMzIuYyAgICAgIHwgICAyNSAr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxsXzY0LmMgICAg ICB8ICAgMTIgKysrKysrLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oICAgICB8 ICAgMTIgKysrKystLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDQ5 IGRlbGV0aW9ucygtKQoKLS0tIGEvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9lbnRyeS5yc3QKKysr IGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9lbnRyeS5yc3QKQEAgLTY4LDE2ICs2OCwyMCBAQCBs b3ctbGV2ZWwgQyBjb2RlIG11c3Qgbm90IGJlIGluc3RydW1lbnRlCiAgIG5vaW5zdHIgdm9pZCBz eXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgbnIpCiAgIHsKIAlhcmNoX3N5c2NhbGxf ZW50ZXIocmVncyk7Ci0JbnIgPSBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6 ZV9zdGFjayhyZWdzLCBucik7Ci0KLQlpbnN0cnVtZW50YXRpb25fYmVnaW4oKTsKLQlpZiAoIWlu dm9rZV9zeXNjYWxsKHJlZ3MsIG5yKSAmJiBuciAhPSAtMSkKLQkgCXJlc3VsdF9yZWcocmVncykg PSBfX3N5c19uaV9zeXNjYWxsKHJlZ3MpOwotCWluc3RydW1lbnRhdGlvbl9lbmQoKTsKLQorCXJl c3VsdF9yZWcocmVncykgPSAtRU5PU1lTOworCWlmIChzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9t b2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCAmbnIpKSB7CisJCWluc3RydW1lbnRhdGlvbl9iZWdp bigpOworCQlpZiAoIWludm9rZV9zeXNjYWxsKHJlZ3MsIG5yKSkKKwkJCXJlc3VsdF9yZWcocmVn cykgPSBfX3N5c19uaV9zeXNjYWxsKHJlZ3MpOworCQlpbnN0cnVtZW50YXRpb25fZW5kKCk7CisJ fQogCXN5c2NhbGxfZXhpdF90b191c2VyX21vZGUocmVncyk7CiAgIH0KIAorSXQgaXMgcmVxdWly ZWQgdGhhdCBlaXRoZXIgdGhlIGxvdyBsZXZlbCBhc3NlbWJseSBjb2RlIG9yIHRoZSBzeXNjYWxs CitmdW5jdGlvbiBzZXRzIHRoZSByZXN1bHQgcmVnaXN0ZXIgdG8gLUVOT1NZUyBiZWZvcmUgaW52 b2tpbmcgdGhlIGdlbmVyaWMKK2NvZGUuCisKIHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVf cmFuZG9taXplX3N0YWNrKCkgZmlyc3QgaW52b2tlcwogZW50ZXJfZnJvbV91c2VyX21vZGVfcmFu ZG9taXplX3N0YWNrKCkgd2hpY2ggZXN0YWJsaXNoZXMgc3RhdGUgaW4gdGhlCiBmb2xsb3dpbmcg b3JkZXI6Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC9zeXNjYWxsLmMKKysrIGIvYXJjaC9s b29uZ2FyY2gva2VybmVsL3N5c2NhbGwuYwpAQCAtNTcsOCArNTcsOCBAQCB0eXBlZGVmIGxvbmcg KCpzeXNfY2FsbF9mbikodW5zaWduZWQgbG9uCiAKIHZvaWQgbm9pbnN0ciBfX25vX3N0YWNrX3By b3RlY3RvciBkb19zeXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXVuc2lnbmVkIGxv bmcgbnI7CiAJc3lzX2NhbGxfZm4gc3lzY2FsbF9mbjsKKwl1bnNpZ25lZCBsb25nIG5yOwogCiAJ bnIgPSByZWdzLT5yZWdzWzExXTsKIAkvKiBTZXQgZm9yIHN5c2NhbGwgcmVzdGFydGluZyAqLwpA QCAtNjksMTIgKzY5LDEyIEBAIHZvaWQgbm9pbnN0ciBfX25vX3N0YWNrX3Byb3RlY3RvciBkb19z eXMKIAlyZWdzLT5vcmlnX2EwID0gcmVncy0+cmVnc1s0XTsKIAlyZWdzLT5yZWdzWzRdID0gLUVO T1NZUzsKIAotCW5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3Rh Y2socmVncywgbnIpOwotCi0JaWYgKG5yIDwgTlJfc3lzY2FsbHMpIHsKLQkJc3lzY2FsbF9mbiA9 IHN5c19jYWxsX3RhYmxlW2FycmF5X2luZGV4X25vc3BlYyhuciwgTlJfc3lzY2FsbHMpXTsKLQkJ cmVncy0+cmVnc1s0XSA9IHN5c2NhbGxfZm4ocmVncy0+b3JpZ19hMCwgcmVncy0+cmVnc1s1XSwg cmVncy0+cmVnc1s2XSwKLQkJCQkJICAgcmVncy0+cmVnc1s3XSwgcmVncy0+cmVnc1s4XSwgcmVn cy0+cmVnc1s5XSk7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3Jh bmRvbWl6ZV9zdGFjayhyZWdzLCAmbnIpKSkgeworCQlpZiAobnIgPCBOUl9zeXNjYWxscykgewor CQkJc3lzY2FsbF9mbiA9IHN5c19jYWxsX3RhYmxlW2FycmF5X2luZGV4X25vc3BlYyhuciwgTlJf c3lzY2FsbHMpXTsKKwkJCXJlZ3MtPnJlZ3NbNF0gPSBzeXNjYWxsX2ZuKHJlZ3MtPm9yaWdfYTAs IHJlZ3MtPnJlZ3NbNV0sIHJlZ3MtPnJlZ3NbNl0sCisJCQkJCQkgICByZWdzLT5yZWdzWzddLCBy ZWdzLT5yZWdzWzhdLCByZWdzLT5yZWdzWzldKTsKKwkJfQogCX0KIAogCXN5c2NhbGxfZXhpdF90 b191c2VyX21vZGUocmVncyk7Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbC5jCisr KyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbC5jCkBAIC0xOCw3ICsxOCw4IEBAIG5vdHJh Y2UgbG9uZyBzeXN0ZW1fY2FsbF9leGNlcHRpb24oc3RydWMKIAlsb25nIHJldDsKIAlzeXNjYWxs X2ZuIGY7CiAKLQlyMCA9IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfcmFuZG9taXplX3N0 YWNrKHJlZ3MsIHIwKTsKKwlpZiAodW5saWtlbHkoIXN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21v ZGVfcmFuZG9taXplX3N0YWNrKHJlZ3MsICZyMCkpCisJCXJldHVybiBzeXNjYWxsX2dldF9lcnJv cihjdXJyZW50LCByZWdzKTsKIAogCWlmICh1bmxpa2VseShyMCA+PSBOUl9zeXNjYWxscykpIHsK IAkJaWYgKHVubGlrZWx5KHRyYXBfaXNfdW5zdXBwb3J0ZWRfc2N2KHJlZ3MpKSkgewotLS0gYS9h cmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMK QEAgLTMzMiwxMyArMzMyLDEyIEBAIHZvaWQgZG9fdHJhcF9lY2FsbF91KHN0cnVjdCBwdF9yZWdz ICpyZWcKIAogCQlyaXNjdl92X3ZzdGF0ZV9kaXNjYXJkKHJlZ3MpOwogCi0JCXN5c2NhbGwgPSBz eXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCBzeXNjYWxs KTsKLQotCQlpZiAoc3lzY2FsbCA+PSAwICYmIHN5c2NhbGwgPCBOUl9zeXNjYWxscykgewotCQkJ c3lzY2FsbCA9IGFycmF5X2luZGV4X25vc3BlYyhzeXNjYWxsLCBOUl9zeXNjYWxscyk7Ci0JCQlz eXNjYWxsX2hhbmRsZXIocmVncywgc3lzY2FsbCk7CisJCWlmIChzeXNjYWxsX2VudGVyX2Zyb21f dXNlcl9tb2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCAmc3lzY2FsbCkpIHsKKwkJCWlmIChzeXNj YWxsID49IDAgJiYgc3lzY2FsbCA8IE5SX3N5c2NhbGxzKSB7CisJCQkJc3lzY2FsbCA9IGFycmF5 X2luZGV4X25vc3BlYyhzeXNjYWxsLCBOUl9zeXNjYWxscyk7CisJCQkJc3lzY2FsbF9oYW5kbGVy KHJlZ3MsIHN5c2NhbGwpOworCQkJfQogCQl9Ci0KIAkJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9k ZShyZWdzKTsKIAl9IGVsc2UgewogCQlpcnFlbnRyeV9zdGF0ZV90IHN0YXRlID0gaXJxZW50cnlf bm1pX2VudGVyKHJlZ3MpOwotLS0gYS9hcmNoL3MzOTAva2VybmVsL3N5c2NhbGwuYworKysgYi9h cmNoL3MzOTAva2VybmVsL3N5c2NhbGwuYwpAQCAtOTYsNiArOTYsNyBAQCBTWVNDQUxMX0RFRklO RTAobmlfc3lzY2FsbCkKIHZvaWQgbm9pbnN0ciBfX2RvX3N5c2NhbGwoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIGludCBwZXJfdHJhcCkKIHsKIAl1bnNpZ25lZCBsb25nIG5yOworCWJvb2wgcGVybWl0 OwogCiAJZW50ZXJfZnJvbV91c2VyX21vZGVfcmFuZG9taXplX3N0YWNrKHJlZ3MpOwogCkBAIC0x MjEsNyArMTIyLDkgQEAgdm9pZCBub2luc3RyIF9fZG9fc3lzY2FsbChzdHJ1Y3QgcHRfcmVncwog CQlyZWdzLT5wc3cuYWRkciA9IGN1cnJlbnQtPnJlc3RhcnRfYmxvY2suYXJjaF9kYXRhOwogCQlj dXJyZW50LT5yZXN0YXJ0X2Jsb2NrLmFyY2hfZGF0YSA9IDE7CiAJfQotCW5yID0gc3lzY2FsbF9l bnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHJlZ3MsIG5yKTsKKworCXBlcm1pdCA9IHN5c2NhbGxf ZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCAmbnIpOworCiAJLyoKIAkgKiBJbiB0aGUg czM5MCBwdHJhY2UgQUJJLCBib3RoIHRoZSBzeXNjYWxsIG51bWJlciBhbmQgdGhlIHJldHVybiB2 YWx1ZQogCSAqIHVzZSBncHIyLiBIb3dldmVyLCB1c2Vyc3BhY2UgcHV0cyB0aGUgc3lzY2FsbCBu dW1iZXIgZWl0aGVyIGluIHRoZQpAQCAtMTI5LDcgKzEzMiw3IEBAIHZvaWQgbm9pbnN0ciBfX2Rv X3N5c2NhbGwoc3RydWN0IHB0X3JlZ3MKIAkgKiB3b3JrLCB0aGUgcHRyYWNlIGNvZGUgc2V0cyBQ SUZfU1lTQ0FMTF9SRVRfU0VULCB3aGljaCBpcyBjaGVja2VkIGhlcmUKIAkgKiBhbmQgaWYgc2V0 LCB0aGUgc3lzY2FsbCB3aWxsIGJlIHNraXBwZWQuCiAJICovCi0JaWYgKHVubGlrZWx5KHRlc3Rf YW5kX2NsZWFyX3B0X3JlZ3NfZmxhZyhyZWdzLCBQSUZfU1lTQ0FMTF9SRVRfU0VUKSkpCisJaWYg KHVubGlrZWx5KHRlc3RfYW5kX2NsZWFyX3B0X3JlZ3NfZmxhZyhyZWdzLCBQSUZfU1lTQ0FMTF9S RVRfU0VUKSB8fCAhcGVybWl0KSkKIAkJZ290byBvdXQ7CiAJcmVncy0+Z3Byc1syXSA9IC1FTk9T WVM7CiAJaWYgKGxpa2VseShuciA8IE5SX3N5c2NhbGxzKSkgewotLS0gYS9hcmNoL3g4Ni9lbnRy eS9zeXNjYWxsXzMyLmMKKysrIGIvYXJjaC94ODYvZW50cnkvc3lzY2FsbF8zMi5jCkBAIC0xNjEs OCArMTYxLDkgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGludDgwX2lzX2V4dAogCW5y ID0gc3lzY2FsbF8zMl9lbnRlcihyZWdzKTsKIAogCWxvY2FsX2lycV9lbmFibGUoKTsKLQluciA9 IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCBucik7Ci0JZG9fc3lzY2Fs bF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKKworCWlmIChsaWtlbHkoc3lzY2FsbF9lbnRlcl9mcm9t X3VzZXJfbW9kZV93b3JrKHJlZ3MsICZucikpKQorCQlkb19zeXNjYWxsXzMyX2lycXNfb24ocmVn cywgbnIpOwogCiAJaW5zdHJ1bWVudGF0aW9uX2VuZCgpOwogCXN5c2NhbGxfZXhpdF90b191c2Vy X21vZGUocmVncyk7CkBAIC0yMjMsOCArMjI0LDggQEAgREVGSU5FX0ZSRURFTlRSWV9SQVcoaW50 ODBfZW11bGF0aW9uKQogCW5yID0gc3lzY2FsbF8zMl9lbnRlcihyZWdzKTsKIAogCWxvY2FsX2ly cV9lbmFibGUoKTsKLQluciA9IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdz LCBucik7Ci0JZG9fc3lzY2FsbF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKKwlpZiAobGlrZWx5KHN5 c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCAmbnIpKSkKKwkJZG9fc3lzY2Fs bF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKIAogCWluc3RydW1lbnRhdGlvbl9lbmQoKTsKIAlzeXNj YWxsX2V4aXRfdG9fdXNlcl9tb2RlKHJlZ3MpOwpAQCAtMjQzLDEzICsyNDQsMTMgQEAgREVGSU5F X0ZSRURFTlRSWV9SQVcoaW50ODBfZW11bGF0aW9uKQogCSAqIG9yaWdfYXgsIHRoZSBpbnQgcmV0 dXJuIHZhbHVlIHRydW5jYXRlcyBpdC4gVGhpcyBtYXRjaGVzCiAJICogdGhlIHNlbWFudGljcyBv ZiBzeXNjYWxsX2dldF9ucigpLgogCSAqLwotCW5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJf bW9kZV9yYW5kb21pemVfc3RhY2socmVncywgbnIpOwotCi0JaW5zdHJ1bWVudGF0aW9uX2JlZ2lu KCk7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6ZV9z dGFjayhyZWdzLCAmbnIpKSkgeworCQlpbnN0cnVtZW50YXRpb25fYmVnaW4oKTsKIAotCWRvX3N5 c2NhbGxfMzJfaXJxc19vbihyZWdzLCBucik7CisJCWRvX3N5c2NhbGxfMzJfaXJxc19vbihyZWdz LCBucik7CiAKLQlpbnN0cnVtZW50YXRpb25fZW5kKCk7CisJCWluc3RydW1lbnRhdGlvbl9lbmQo KTsKKwl9CiAJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZShyZWdzKTsKIH0KICNlbmRpZiAvKiAh Q09ORklHX0lBMzJfRU1VTEFUSU9OICovCkBAIC0yODYsMTAgKzI4Nyw4IEBAIHN0YXRpYyBub2lu c3RyIGJvb2wgX19kb19mYXN0X3N5c2NhbGxfMzIKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCW5y ID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHJlZ3MsIG5yKTsKLQotCS8qIE5v dyB0aGlzIGlzIGp1c3QgbGlrZSBhIG5vcm1hbCBzeXNjYWxsLiAqLwotCWRvX3N5c2NhbGxfMzJf aXJxc19vbihyZWdzLCBucik7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9t b2RlX3dvcmsocmVncywgJm5yKSkpCisJCWRvX3N5c2NhbGxfMzJfaXJxc19vbihyZWdzLCBucik7 CiAKIAlpbnN0cnVtZW50YXRpb25fZW5kKCk7CiAJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZShy ZWdzKTsKLS0tIGEvYXJjaC94ODYvZW50cnkvc3lzY2FsbF82NC5jCisrKyBiL2FyY2gveDg2L2Vu dHJ5L3N5c2NhbGxfNjQuYwpAQCAtNzgsMTQgKzc4LDE0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxp bmUgdm9pZCBkb19zeXNjYWxsX3gKIC8qIFJldHVybnMgdHJ1ZSB0byByZXR1cm4gdXNpbmcgU1lT UkVULCBvciBmYWxzZSB0byB1c2UgSVJFVCAqLwogX192aXNpYmxlIG5vaW5zdHIgYm9vbCBkb19z eXNjYWxsXzY0KHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIG5yKQogewotCW5yID0gc3lzY2Fs bF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3RhY2socmVncywgbnIpOworCWlmIChs aWtlbHkoc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3RhY2socmVncywg Jm5yKSkpIHsKKwkJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CiAKLQlpbnN0cnVtZW50YXRpb25f YmVnaW4oKTsKKwkJaWYgKCFkb19zeXNjYWxsX3g2NChyZWdzLCBucikpCisJCQlkb19zeXNjYWxs X3gzMihyZWdzLCBucik7CiAKLQlpZiAoIWRvX3N5c2NhbGxfeDY0KHJlZ3MsIG5yKSkKLQkJZG9f c3lzY2FsbF94MzIocmVncywgbnIpOwotCi0JaW5zdHJ1bWVudGF0aW9uX2VuZCgpOworCQlpbnN0 cnVtZW50YXRpb25fZW5kKCk7CisJfQogCXN5c2NhbGxfZXhpdF90b191c2VyX21vZGUocmVncyk7 CiAKIAkvKgotLS0gYS9pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oCisrKyBiL2luY2x1ZGUv bGludXgvZW50cnktY29tbW9uLmgKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGlubGluZSB2b2lk IHN5c2NhbGxfZW50ZXJfYXVkaXQocwogCX0KIH0KIAotc3RhdGljIF9fYWx3YXlzX2lubGluZSBi b29sIHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxv bmcgd29yaywKK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVy KHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmssCiAJCQkJCQlsb25nICpz eXNjYWxsKQogewogCS8qCkBAIC0xNDEsMTYgKzE0MSwxNCBAQCBzdGF0aWMgX19hbHdheXNfaW5s aW5lIGJvb2wgc3lzY2FsbF90cmFjCiAgKiAgICAgcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1p dF9lbnRyeSgpLCBfX3NlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSwgdHJhY2Vfc3lzX2VudGVyKCkK ICAqICAyKSBJbnZvY2F0aW9uIG9mIGF1ZGl0X3N5c2NhbGxfZW50cnkoKQogICovCi1zdGF0aWMg X19hbHdheXNfaW5saW5lIGxvbmcgc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHN0 cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIHN5c2NhbGwpCitzdGF0aWMgX19hbHdheXNfaW5saW5l IGJvb2wgc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHN0cnVjdCBwdF9yZWdzICpy ZWdzLCBsb25nICpzeXNjYWxsKQogewogCXVuc2lnbmVkIGxvbmcgd29yayA9IFJFQURfT05DRShj dXJyZW50X3RocmVhZF9pbmZvKCktPnN5c2NhbGxfd29yayk7CiAKLQlpZiAod29yayAmIFNZU0NB TExfV09SS19FTlRFUikgewotCQlpZiAoIXN5c2NhbGxfdHJhY2VfZW50ZXIocmVncywgd29yaywg JnN5c2NhbGwpKQotCQkJcmV0dXJuIC0xTDsKLQl9CisJaWYgKHVubGlrZWx5KHdvcmsgJiBTWVND QUxMX1dPUktfRU5URVIpKQorCQlyZXR1cm4gc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3Jr LCBzeXNjYWxsKTsKIAotCXJldHVybiBzeXNjYWxsOworCXJldHVybiB0cnVlOwogfQogCiAvKioK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1y aXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5538BC44501 for ; Tue, 7 Jul 2026 19:07:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:Subject:Cc:To: From:Message-ID:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=prj9/zFCqp4MtdZoQFo6bvR5fnMzYhfSrR1dVTED6cQ=; b=CdfKnNcKxfHj7J s/WDp+LisZzePeJuL4VtxAo0KqkTgrHez/E/Z/cJC3j97FkWswVcbwyXP5aju10oIlSq/4LxSEkWb ZOpQdC03DwCDTEU4lP03QlI2/KAsroDKpRMqjEQs+zEj8kPEccftRJRvdBbjJFXlWzgauipoN2CG6 T1GZjd/pfm1NT0/KquHr5rEueyMMwlRrmPzzfo0ub6cVXQbwUdDmLKCSYlgWbP5LeJe4Bz2PXEfm3 HYI3M1xdwR0RvRJ17vZiiKqYEt7+A6Nc4rc7hyKWUi1O+FuoUeCEGPO12O5wrsKlhNvdBt9d9suFA 8b13dMYiM/TxwawPhn2A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1whB9B-0000000FikF-0LTd; Tue, 07 Jul 2026 19:07:57 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1whB8T-0000000Fhmy-1Qhl; Tue, 07 Jul 2026 19:07:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id B1DC26138D; Tue, 7 Jul 2026 19:07:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 959C01F00A3E; Tue, 7 Jul 2026 19:07:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783451232; bh=ujg63nFpNppD6hh8ErFLF1J5JX2ZfpeEoGN6ZrinWc0=; h=Date:From:To:Cc:Subject:References; b=AHEhZEMBYzBtdLcDTyhlS45Q7S7ZwTjKIqiJzRbhD5/XAbHDISjmwksUK82ZNX4eN v/56KPMLh+ap7XlsQOg/BTaFcC0r6cCqimRsKEEjnM7HqpHCJ0wTkRT4YpPRqksdHy hbur5BBOkf2MqLhVXO+OEJPygToMV0GfcDHqGyXAo5xm9el2SAov1vxRwDLsZ9mDTO 8DMadvH3j+KUyVnLd3M9IfC7bg8qqqSHv1wejHUyEH+mIuHPWHU4dWWsyjmGqtk7PJ 8vvvohEhLbaJuT/nrhqQWxuMcj0mhqi8CGIjfadl6DsadWHk3iOaJCLltrwK6NFjAk oac7QSSvNoGEw== Date: Tue, 07 Jul 2026 21:07:09 +0200 Message-ID: <20260707190254.603111179@kernel.org> User-Agent: quilt/0.69 From: Thomas Gleixner To: LKML Cc: Peter Zijlstra , =?UTF-8?q?Michal=20Such=C3=A1nek?= , Jonathan Corbet , Arnd Bergmann , Mark Rutland , Huacai Chen , Michael Ellerman , Shrikanth Hegde , Paul Walmsley , Palmer Dabbelt , Sven Schnelle , linux-doc@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, Kees Cook , x86@kernel.org, Jinjie Ruan , Andy Lutomirski , Oleg Nesterov , Richard Henderson , Russell King , Catalin Marinas , Guo Ren , Geert Uytterhoeven , Thomas Bogendoerfer , Helge Deller , Yoshinori Sato , Richard Weinberger , Chris Zankel , linux-arm-kernel@lists.infradead.org, linux-alpha@vger.kernel.org, linux-csky@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org, Vineet Gupta , Will Deacon , Brian Cain , Michal Simek , Dinh Nguyen , "David S. Miller" , Andreas Larsson , linux-snps-arc@lists.infradead.org, linux-hexagon@vger.kernel.org, linux-openrisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org Subject: [patch 18/18] entry, treewide: Make syscall_enter_from_user_mode[_work]() indicate syscall execution References: <20260707181957.433213175@kernel.org> MIME-Version: 1.0 X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org RnJvbTogTWljaGFsIFN1Y2jDoW5layA8bXN1Y2hhbmVrQHN1c2UuZGU+CgpUaGUgcmV0dXJuIHZh bHVlcyBvZiBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlW193b3JrXSgpIGFyZQpub24taW50 dWl0aXZlLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4gdGhlIHN5c2NhbGwgbnVtYmVyIHdoaWNoIHNo b3VsZCBiZQppbnZva2VkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgc3lzY2FsbCBlbnRy eSBjb2RlLiBUaGUgcmV0dXJuZWQKbnVtYmVyIGNhbiBiZToKCiAgLSB0aGUgdW5tb2RpZmllZCBz eXNjYWxsIG51bWJlciB3aGljaCB3YXMgaGFuZGVkIGluIGJ5IHRoZSBjYWxsZXIKCiAgLSBhIG1v ZGlmaWVkIHN5c2NhbGwgbnVtYmVyIChwdHJhY2UsIHNlY2NvbXAsIHRyYWNlL3Byb2JlL2JwZikK ClRoYXQgaGFzIGFuIGFkZGl0aW9uYWwgdHdpc3QuIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgLTFM IHRoZW4gdGhlIGNhbGxlciBpcwpub3QgYWxsb3dlZCB0byBtb2RpZnkgdGhlIHJldHVybiB2YWx1 ZSBhcyB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBtb2RpZnlpbmcKZW50aXR5IHJlcXVlc3RzIHRv IGFib3J0IHRoZSBzeXNjYWxsIGFuZCBzZXQgdGhlIHJldHVybiB2YWx1ZSBhbHJlYWR5LiBUaGF0 CmNhbiBvYnZpb3VzbHkgbm90IGJlIGRpZmZlcmVudGlhdGVkIGZyb20gYSBzeXNjYWxsIHdoaWNo IGhhbmRlZCBpbiAtMSBhcwpzeXNjYWxsIG51bWJlci4KClRoZSBlc3RhYmxpc2hlZCB3YXkgdG8g ZGVhbCB3aXRoIHRoYXQgaXM6CgogICAgc2V0X3JldHVybl92YWx1ZShyZWdzLCAtRU5PU1lTKTsK ICAgIG5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZShyZWdzLCBucik7CiAgICBpZiAo KHVuc2lnbmVkKW5yIDwgU1lTQ0FMTE5SX01BWCkKICAgIAloYW5kbGVfc3lzY2FsbChyZWdzLCBu cik7CiAgICBlbHNlIGlmIChuciAhPSAtMSkKICAgIAlzZXRfcmV0dXJuX3ZhbHVlKHJlZ3MsIC1F Tk9TWVMpOwoKVGhlIGxhdHRlciBpcyBvYnZpb3VzbHkgcmVkdW5kYW50LCBidXQgdGhhdCdzIGp1 c3QgYSBsZWZ0b3ZlciBvZiB0aGUKaGlzdG9yaWNhbCBldm9sdXRpb24gb2YgdGhpcyBjb2RlLiBT MzkwIGhhcyBzb21lIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGhlcmUsCndoaWNoIGNhbiBiZSBhdm9p ZGVkIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgYW1iaWd1b3VzLgoKTm93IHRoYXQgdGhl IGZ1bmN0aW9ucyB3aGljaCBtb2RpZnkgdGhlIHN5c2NhbGwgbnVtYmVyIGFuZCB3YW50IHRvIGFi b3J0CmFyZSBjb252ZXJ0ZWQgdG8gaW5kaWNhdGUgdGhhdCB3aXRoIGEgYm9vbGVhbiByZXR1cm4g dmFsdWUsIGl0J3Mgb2J2aW91cyB0bwpoYW5kIHRoaXMgdGhyb3VnaCB0byB0aGUgY2FsbGVycy4K ClJld29yayBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlW193b3JrXSkgc28gdGhleSB0YWtl IGEgcG9pbnRlciB0byB0aGUKc3lzY2FsbCBudW1iZXIgYW5kIHJldHVybiBhIGJvb2xlYW4sIHdo aWNoIGluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXNjYWxsCnNob3VsZCBiZSBoYW5kbGVkIG9yIG5v dC4KClRoYXQncyBub3Qgb25seSBtb3JlIGludHVpdGl2ZSwgaXQgYWxzbyByZXN1bHRzIGluIHNs aWdodGx5IGRlbnNlcgpleGVjdXRhYmxlIGNvZGUgb24geDg2IGF0IGxlYXN0LCBidXQgcGVyZiBy ZXN1bHRzIGFyZSBuZXV0cmFsIGFuZCB3aXRoaW4KdGhlIG5vaXNlLgoKWyB0Z2x4OiBBZG9wdGVk IGl0IHRvIHRoZSBjaGFuZ2VzIGluIHRoZSBnZW5lcmljIGVudHJ5IGNvZGUsIGZpeGVkIHVwIHRo ZQogIAkzMi1iaXQgZmFsbG91dCBhbmQgcmV3cm90ZSBjaGFuZ2UgbG9nIF0KClNpZ25lZC1vZmYt Ynk6IE1pY2hhbCBTdWNow6FuZWsgPG1zdWNoYW5la0BzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBU aG9tYXMgR2xlaXhuZXIgPHRnbHhAa2VybmVsLm9yZz4KQ2M6IEpvbmF0aGFuIENvcmJldCA8Y29y YmV0QGx3bi5uZXQ+CkNjOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpDYzogTWFyayBS dXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KQ2M6IEh1YWNhaSBDaGVuIDxjaGVuaHVhY2Fp QGtlcm5lbC5vcmc+CkNjOiBNaWNoYWVsIEVsbGVybWFuIDxtcGVAZWxsZXJtYW4uaWQuYXU+CkNj OiBTaHJpa2FudGggSGVnZGUgPHNzaGVnZGVAbGludXguaWJtLmNvbT4KQ2M6IFBhdWwgV2FsbXNs ZXkgPHBqd0BrZXJuZWwub3JnPgpDYzogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNv bT4KQ2M6IFN2ZW4gU2NobmVsbGUgPHN2ZW5zQGxpbnV4LmlibS5jb20+CkNjOiBsaW51eC1kb2NA dmdlci5rZXJuZWwub3JnCkNjOiBsb29uZ2FyY2hAbGlzdHMubGludXguZGV2CkNjOiBsaW51eHBw Yy1kZXZAbGlzdHMub3psYWJzLm9yZwpDYzogbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9y ZwpDYzogbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKLS0tCiBEb2N1bWVudGF0aW9uL2NvcmUt YXBpL2VudHJ5LnJzdCB8ICAgMTggKysrKysrKysrKystLS0tLS0tCiBhcmNoL2xvb25nYXJjaC9r ZXJuZWwvc3lzY2FsbC5jICB8ICAgMTQgKysrKysrKy0tLS0tLS0KIGFyY2gvcG93ZXJwYy9rZXJu ZWwvc3lzY2FsbC5jICAgIHwgICAgMyArKy0KIGFyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMgICAg ICAgIHwgICAxMSArKysrKy0tLS0tLQogYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxsLmMgICAgICAg fCAgICA3ICsrKysrLS0KIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxfMzIuYyAgICAgIHwgICAyNSAr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxsXzY0LmMgICAg ICB8ICAgMTIgKysrKysrLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oICAgICB8 ICAgMTIgKysrKystLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDQ5 IGRlbGV0aW9ucygtKQoKLS0tIGEvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9lbnRyeS5yc3QKKysr IGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9lbnRyeS5yc3QKQEAgLTY4LDE2ICs2OCwyMCBAQCBs b3ctbGV2ZWwgQyBjb2RlIG11c3Qgbm90IGJlIGluc3RydW1lbnRlCiAgIG5vaW5zdHIgdm9pZCBz eXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgbnIpCiAgIHsKIAlhcmNoX3N5c2NhbGxf ZW50ZXIocmVncyk7Ci0JbnIgPSBzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6 ZV9zdGFjayhyZWdzLCBucik7Ci0KLQlpbnN0cnVtZW50YXRpb25fYmVnaW4oKTsKLQlpZiAoIWlu dm9rZV9zeXNjYWxsKHJlZ3MsIG5yKSAmJiBuciAhPSAtMSkKLQkgCXJlc3VsdF9yZWcocmVncykg PSBfX3N5c19uaV9zeXNjYWxsKHJlZ3MpOwotCWluc3RydW1lbnRhdGlvbl9lbmQoKTsKLQorCXJl c3VsdF9yZWcocmVncykgPSAtRU5PU1lTOworCWlmIChzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9t b2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCAmbnIpKSB7CisJCWluc3RydW1lbnRhdGlvbl9iZWdp bigpOworCQlpZiAoIWludm9rZV9zeXNjYWxsKHJlZ3MsIG5yKSkKKwkJCXJlc3VsdF9yZWcocmVn cykgPSBfX3N5c19uaV9zeXNjYWxsKHJlZ3MpOworCQlpbnN0cnVtZW50YXRpb25fZW5kKCk7CisJ fQogCXN5c2NhbGxfZXhpdF90b191c2VyX21vZGUocmVncyk7CiAgIH0KIAorSXQgaXMgcmVxdWly ZWQgdGhhdCBlaXRoZXIgdGhlIGxvdyBsZXZlbCBhc3NlbWJseSBjb2RlIG9yIHRoZSBzeXNjYWxs CitmdW5jdGlvbiBzZXRzIHRoZSByZXN1bHQgcmVnaXN0ZXIgdG8gLUVOT1NZUyBiZWZvcmUgaW52 b2tpbmcgdGhlIGdlbmVyaWMKK2NvZGUuCisKIHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVf cmFuZG9taXplX3N0YWNrKCkgZmlyc3QgaW52b2tlcwogZW50ZXJfZnJvbV91c2VyX21vZGVfcmFu ZG9taXplX3N0YWNrKCkgd2hpY2ggZXN0YWJsaXNoZXMgc3RhdGUgaW4gdGhlCiBmb2xsb3dpbmcg b3JkZXI6Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC9zeXNjYWxsLmMKKysrIGIvYXJjaC9s b29uZ2FyY2gva2VybmVsL3N5c2NhbGwuYwpAQCAtNTcsOCArNTcsOCBAQCB0eXBlZGVmIGxvbmcg KCpzeXNfY2FsbF9mbikodW5zaWduZWQgbG9uCiAKIHZvaWQgbm9pbnN0ciBfX25vX3N0YWNrX3By b3RlY3RvciBkb19zeXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXVuc2lnbmVkIGxv bmcgbnI7CiAJc3lzX2NhbGxfZm4gc3lzY2FsbF9mbjsKKwl1bnNpZ25lZCBsb25nIG5yOwogCiAJ bnIgPSByZWdzLT5yZWdzWzExXTsKIAkvKiBTZXQgZm9yIHN5c2NhbGwgcmVzdGFydGluZyAqLwpA QCAtNjksMTIgKzY5LDEyIEBAIHZvaWQgbm9pbnN0ciBfX25vX3N0YWNrX3Byb3RlY3RvciBkb19z eXMKIAlyZWdzLT5vcmlnX2EwID0gcmVncy0+cmVnc1s0XTsKIAlyZWdzLT5yZWdzWzRdID0gLUVO T1NZUzsKIAotCW5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3Rh Y2socmVncywgbnIpOwotCi0JaWYgKG5yIDwgTlJfc3lzY2FsbHMpIHsKLQkJc3lzY2FsbF9mbiA9 IHN5c19jYWxsX3RhYmxlW2FycmF5X2luZGV4X25vc3BlYyhuciwgTlJfc3lzY2FsbHMpXTsKLQkJ cmVncy0+cmVnc1s0XSA9IHN5c2NhbGxfZm4ocmVncy0+b3JpZ19hMCwgcmVncy0+cmVnc1s1XSwg cmVncy0+cmVnc1s2XSwKLQkJCQkJICAgcmVncy0+cmVnc1s3XSwgcmVncy0+cmVnc1s4XSwgcmVn cy0+cmVnc1s5XSk7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3Jh bmRvbWl6ZV9zdGFjayhyZWdzLCAmbnIpKSkgeworCQlpZiAobnIgPCBOUl9zeXNjYWxscykgewor CQkJc3lzY2FsbF9mbiA9IHN5c19jYWxsX3RhYmxlW2FycmF5X2luZGV4X25vc3BlYyhuciwgTlJf c3lzY2FsbHMpXTsKKwkJCXJlZ3MtPnJlZ3NbNF0gPSBzeXNjYWxsX2ZuKHJlZ3MtPm9yaWdfYTAs IHJlZ3MtPnJlZ3NbNV0sIHJlZ3MtPnJlZ3NbNl0sCisJCQkJCQkgICByZWdzLT5yZWdzWzddLCBy ZWdzLT5yZWdzWzhdLCByZWdzLT5yZWdzWzldKTsKKwkJfQogCX0KIAogCXN5c2NhbGxfZXhpdF90 b191c2VyX21vZGUocmVncyk7Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbC5jCisr KyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbC5jCkBAIC0xOCw3ICsxOCw4IEBAIG5vdHJh Y2UgbG9uZyBzeXN0ZW1fY2FsbF9leGNlcHRpb24oc3RydWMKIAlsb25nIHJldDsKIAlzeXNjYWxs X2ZuIGY7CiAKLQlyMCA9IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfcmFuZG9taXplX3N0 YWNrKHJlZ3MsIHIwKTsKKwlpZiAodW5saWtlbHkoIXN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21v ZGVfcmFuZG9taXplX3N0YWNrKHJlZ3MsICZyMCkpCisJCXJldHVybiBzeXNjYWxsX2dldF9lcnJv cihjdXJyZW50LCByZWdzKTsKIAogCWlmICh1bmxpa2VseShyMCA+PSBOUl9zeXNjYWxscykpIHsK IAkJaWYgKHVubGlrZWx5KHRyYXBfaXNfdW5zdXBwb3J0ZWRfc2N2KHJlZ3MpKSkgewotLS0gYS9h cmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMK QEAgLTMzMiwxMyArMzMyLDEyIEBAIHZvaWQgZG9fdHJhcF9lY2FsbF91KHN0cnVjdCBwdF9yZWdz ICpyZWcKIAogCQlyaXNjdl92X3ZzdGF0ZV9kaXNjYXJkKHJlZ3MpOwogCi0JCXN5c2NhbGwgPSBz eXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCBzeXNjYWxs KTsKLQotCQlpZiAoc3lzY2FsbCA+PSAwICYmIHN5c2NhbGwgPCBOUl9zeXNjYWxscykgewotCQkJ c3lzY2FsbCA9IGFycmF5X2luZGV4X25vc3BlYyhzeXNjYWxsLCBOUl9zeXNjYWxscyk7Ci0JCQlz eXNjYWxsX2hhbmRsZXIocmVncywgc3lzY2FsbCk7CisJCWlmIChzeXNjYWxsX2VudGVyX2Zyb21f dXNlcl9tb2RlX3JhbmRvbWl6ZV9zdGFjayhyZWdzLCAmc3lzY2FsbCkpIHsKKwkJCWlmIChzeXNj YWxsID49IDAgJiYgc3lzY2FsbCA8IE5SX3N5c2NhbGxzKSB7CisJCQkJc3lzY2FsbCA9IGFycmF5 X2luZGV4X25vc3BlYyhzeXNjYWxsLCBOUl9zeXNjYWxscyk7CisJCQkJc3lzY2FsbF9oYW5kbGVy KHJlZ3MsIHN5c2NhbGwpOworCQkJfQogCQl9Ci0KIAkJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9k ZShyZWdzKTsKIAl9IGVsc2UgewogCQlpcnFlbnRyeV9zdGF0ZV90IHN0YXRlID0gaXJxZW50cnlf bm1pX2VudGVyKHJlZ3MpOwotLS0gYS9hcmNoL3MzOTAva2VybmVsL3N5c2NhbGwuYworKysgYi9h cmNoL3MzOTAva2VybmVsL3N5c2NhbGwuYwpAQCAtOTYsNiArOTYsNyBAQCBTWVNDQUxMX0RFRklO RTAobmlfc3lzY2FsbCkKIHZvaWQgbm9pbnN0ciBfX2RvX3N5c2NhbGwoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIGludCBwZXJfdHJhcCkKIHsKIAl1bnNpZ25lZCBsb25nIG5yOworCWJvb2wgcGVybWl0 OwogCiAJZW50ZXJfZnJvbV91c2VyX21vZGVfcmFuZG9taXplX3N0YWNrKHJlZ3MpOwogCkBAIC0x MjEsNyArMTIyLDkgQEAgdm9pZCBub2luc3RyIF9fZG9fc3lzY2FsbChzdHJ1Y3QgcHRfcmVncwog CQlyZWdzLT5wc3cuYWRkciA9IGN1cnJlbnQtPnJlc3RhcnRfYmxvY2suYXJjaF9kYXRhOwogCQlj dXJyZW50LT5yZXN0YXJ0X2Jsb2NrLmFyY2hfZGF0YSA9IDE7CiAJfQotCW5yID0gc3lzY2FsbF9l bnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHJlZ3MsIG5yKTsKKworCXBlcm1pdCA9IHN5c2NhbGxf ZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCAmbnIpOworCiAJLyoKIAkgKiBJbiB0aGUg czM5MCBwdHJhY2UgQUJJLCBib3RoIHRoZSBzeXNjYWxsIG51bWJlciBhbmQgdGhlIHJldHVybiB2 YWx1ZQogCSAqIHVzZSBncHIyLiBIb3dldmVyLCB1c2Vyc3BhY2UgcHV0cyB0aGUgc3lzY2FsbCBu dW1iZXIgZWl0aGVyIGluIHRoZQpAQCAtMTI5LDcgKzEzMiw3IEBAIHZvaWQgbm9pbnN0ciBfX2Rv X3N5c2NhbGwoc3RydWN0IHB0X3JlZ3MKIAkgKiB3b3JrLCB0aGUgcHRyYWNlIGNvZGUgc2V0cyBQ SUZfU1lTQ0FMTF9SRVRfU0VULCB3aGljaCBpcyBjaGVja2VkIGhlcmUKIAkgKiBhbmQgaWYgc2V0 LCB0aGUgc3lzY2FsbCB3aWxsIGJlIHNraXBwZWQuCiAJICovCi0JaWYgKHVubGlrZWx5KHRlc3Rf YW5kX2NsZWFyX3B0X3JlZ3NfZmxhZyhyZWdzLCBQSUZfU1lTQ0FMTF9SRVRfU0VUKSkpCisJaWYg KHVubGlrZWx5KHRlc3RfYW5kX2NsZWFyX3B0X3JlZ3NfZmxhZyhyZWdzLCBQSUZfU1lTQ0FMTF9S RVRfU0VUKSB8fCAhcGVybWl0KSkKIAkJZ290byBvdXQ7CiAJcmVncy0+Z3Byc1syXSA9IC1FTk9T WVM7CiAJaWYgKGxpa2VseShuciA8IE5SX3N5c2NhbGxzKSkgewotLS0gYS9hcmNoL3g4Ni9lbnRy eS9zeXNjYWxsXzMyLmMKKysrIGIvYXJjaC94ODYvZW50cnkvc3lzY2FsbF8zMi5jCkBAIC0xNjEs OCArMTYxLDkgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGludDgwX2lzX2V4dAogCW5y ID0gc3lzY2FsbF8zMl9lbnRlcihyZWdzKTsKIAogCWxvY2FsX2lycV9lbmFibGUoKTsKLQluciA9 IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCBucik7Ci0JZG9fc3lzY2Fs bF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKKworCWlmIChsaWtlbHkoc3lzY2FsbF9lbnRlcl9mcm9t X3VzZXJfbW9kZV93b3JrKHJlZ3MsICZucikpKQorCQlkb19zeXNjYWxsXzMyX2lycXNfb24ocmVn cywgbnIpOwogCiAJaW5zdHJ1bWVudGF0aW9uX2VuZCgpOwogCXN5c2NhbGxfZXhpdF90b191c2Vy X21vZGUocmVncyk7CkBAIC0yMjMsOCArMjI0LDggQEAgREVGSU5FX0ZSRURFTlRSWV9SQVcoaW50 ODBfZW11bGF0aW9uKQogCW5yID0gc3lzY2FsbF8zMl9lbnRlcihyZWdzKTsKIAogCWxvY2FsX2ly cV9lbmFibGUoKTsKLQluciA9IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdz LCBucik7Ci0JZG9fc3lzY2FsbF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKKwlpZiAobGlrZWx5KHN5 c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGVfd29yayhyZWdzLCAmbnIpKSkKKwkJZG9fc3lzY2Fs bF8zMl9pcnFzX29uKHJlZ3MsIG5yKTsKIAogCWluc3RydW1lbnRhdGlvbl9lbmQoKTsKIAlzeXNj YWxsX2V4aXRfdG9fdXNlcl9tb2RlKHJlZ3MpOwpAQCAtMjQzLDEzICsyNDQsMTMgQEAgREVGSU5F X0ZSRURFTlRSWV9SQVcoaW50ODBfZW11bGF0aW9uKQogCSAqIG9yaWdfYXgsIHRoZSBpbnQgcmV0 dXJuIHZhbHVlIHRydW5jYXRlcyBpdC4gVGhpcyBtYXRjaGVzCiAJICogdGhlIHNlbWFudGljcyBv ZiBzeXNjYWxsX2dldF9ucigpLgogCSAqLwotCW5yID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJf bW9kZV9yYW5kb21pemVfc3RhY2socmVncywgbnIpOwotCi0JaW5zdHJ1bWVudGF0aW9uX2JlZ2lu KCk7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9tb2RlX3JhbmRvbWl6ZV9z dGFjayhyZWdzLCAmbnIpKSkgeworCQlpbnN0cnVtZW50YXRpb25fYmVnaW4oKTsKIAotCWRvX3N5 c2NhbGxfMzJfaXJxc19vbihyZWdzLCBucik7CisJCWRvX3N5c2NhbGxfMzJfaXJxc19vbihyZWdz LCBucik7CiAKLQlpbnN0cnVtZW50YXRpb25fZW5kKCk7CisJCWluc3RydW1lbnRhdGlvbl9lbmQo KTsKKwl9CiAJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZShyZWdzKTsKIH0KICNlbmRpZiAvKiAh Q09ORklHX0lBMzJfRU1VTEFUSU9OICovCkBAIC0yODYsMTAgKzI4Nyw4IEBAIHN0YXRpYyBub2lu c3RyIGJvb2wgX19kb19mYXN0X3N5c2NhbGxfMzIKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCW5y ID0gc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHJlZ3MsIG5yKTsKLQotCS8qIE5v dyB0aGlzIGlzIGp1c3QgbGlrZSBhIG5vcm1hbCBzeXNjYWxsLiAqLwotCWRvX3N5c2NhbGxfMzJf aXJxc19vbihyZWdzLCBucik7CisJaWYgKGxpa2VseShzeXNjYWxsX2VudGVyX2Zyb21fdXNlcl9t b2RlX3dvcmsocmVncywgJm5yKSkpCisJCWRvX3N5c2NhbGxfMzJfaXJxc19vbihyZWdzLCBucik7 CiAKIAlpbnN0cnVtZW50YXRpb25fZW5kKCk7CiAJc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZShy ZWdzKTsKLS0tIGEvYXJjaC94ODYvZW50cnkvc3lzY2FsbF82NC5jCisrKyBiL2FyY2gveDg2L2Vu dHJ5L3N5c2NhbGxfNjQuYwpAQCAtNzgsMTQgKzc4LDE0IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxp bmUgdm9pZCBkb19zeXNjYWxsX3gKIC8qIFJldHVybnMgdHJ1ZSB0byByZXR1cm4gdXNpbmcgU1lT UkVULCBvciBmYWxzZSB0byB1c2UgSVJFVCAqLwogX192aXNpYmxlIG5vaW5zdHIgYm9vbCBkb19z eXNjYWxsXzY0KHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIG5yKQogewotCW5yID0gc3lzY2Fs bF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3RhY2socmVncywgbnIpOworCWlmIChs aWtlbHkoc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV9yYW5kb21pemVfc3RhY2socmVncywg Jm5yKSkpIHsKKwkJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CiAKLQlpbnN0cnVtZW50YXRpb25f YmVnaW4oKTsKKwkJaWYgKCFkb19zeXNjYWxsX3g2NChyZWdzLCBucikpCisJCQlkb19zeXNjYWxs X3gzMihyZWdzLCBucik7CiAKLQlpZiAoIWRvX3N5c2NhbGxfeDY0KHJlZ3MsIG5yKSkKLQkJZG9f c3lzY2FsbF94MzIocmVncywgbnIpOwotCi0JaW5zdHJ1bWVudGF0aW9uX2VuZCgpOworCQlpbnN0 cnVtZW50YXRpb25fZW5kKCk7CisJfQogCXN5c2NhbGxfZXhpdF90b191c2VyX21vZGUocmVncyk7 CiAKIAkvKgotLS0gYS9pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oCisrKyBiL2luY2x1ZGUv bGludXgvZW50cnktY29tbW9uLmgKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGlubGluZSB2b2lk IHN5c2NhbGxfZW50ZXJfYXVkaXQocwogCX0KIH0KIAotc3RhdGljIF9fYWx3YXlzX2lubGluZSBi b29sIHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxv bmcgd29yaywKK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVy KHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmssCiAJCQkJCQlsb25nICpz eXNjYWxsKQogewogCS8qCkBAIC0xNDEsMTYgKzE0MSwxNCBAQCBzdGF0aWMgX19hbHdheXNfaW5s aW5lIGJvb2wgc3lzY2FsbF90cmFjCiAgKiAgICAgcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1p dF9lbnRyeSgpLCBfX3NlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSwgdHJhY2Vfc3lzX2VudGVyKCkK ICAqICAyKSBJbnZvY2F0aW9uIG9mIGF1ZGl0X3N5c2NhbGxfZW50cnkoKQogICovCi1zdGF0aWMg X19hbHdheXNfaW5saW5lIGxvbmcgc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHN0 cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIHN5c2NhbGwpCitzdGF0aWMgX19hbHdheXNfaW5saW5l IGJvb2wgc3lzY2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZV93b3JrKHN0cnVjdCBwdF9yZWdzICpy ZWdzLCBsb25nICpzeXNjYWxsKQogewogCXVuc2lnbmVkIGxvbmcgd29yayA9IFJFQURfT05DRShj dXJyZW50X3RocmVhZF9pbmZvKCktPnN5c2NhbGxfd29yayk7CiAKLQlpZiAod29yayAmIFNZU0NB TExfV09SS19FTlRFUikgewotCQlpZiAoIXN5c2NhbGxfdHJhY2VfZW50ZXIocmVncywgd29yaywg JnN5c2NhbGwpKQotCQkJcmV0dXJuIC0xTDsKLQl9CisJaWYgKHVubGlrZWx5KHdvcmsgJiBTWVND QUxMX1dPUktfRU5URVIpKQorCQlyZXR1cm4gc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3Jr LCBzeXNjYWxsKTsKIAotCXJldHVybiBzeXNjYWxsOworCXJldHVybiB0cnVlOwogfQogCiAvKioK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1z bnBzLWFyYyBtYWlsaW5nIGxpc3QKbGludXgtc25wcy1hcmNAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXNucHMtYXJj Cg==