Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4543179ybz; Tue, 28 Apr 2020 13:17:11 -0700 (PDT) X-Google-Smtp-Source: APiQypKXgCAnTbP0HDclAAzYC851uLVxHEXOfWRPnNvqNLq/MU++2OGBYaBLi2MbfAISYTzZxu1h X-Received: by 2002:a17:906:496:: with SMTP id f22mr25874091eja.311.1588105031604; Tue, 28 Apr 2020 13:17:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588105031; cv=none; d=google.com; s=arc-20160816; b=r6Wdd5VFkLSwPYVyhNMrQ5tM4761a1X5KB0swABCd0B7HOuTxaetx3Gf39mlBkm8/+ daGGlASspsGBIAzc4mEeu2E4ksx/TafnqftjBZZndeFXTA5Az/dtveLUu2sbZ3QqBudE SteCGSwprdmrBJZDpHDl+NH4SVLERgw18F4JQ2d5TS+ykeegiOCNpjhQMHqr1+lCjSr+ lmtVjTpK8cThZaL9Gk8ssXNWVkULJS7vX9D36v0y9j9HsY2saYRdX0Gj3GtH0Wqx2Oqi T/AOoesRGaHTHL2bn4YzNNtNrAMdnFXau58yWHwctKU5FAtoouzdA1rG3lASmLDzZhQr BRQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=DL4rFSld61/zk5Qm7WT3eFlZpB6m438e+sqqlufab94=; b=E4VRZ5LrwzrT8yESozBwO0neXewLPvupAtGmkiIXaOCoXfEhYuRD0IdIakNVikmi9F WTaz510KlAEOgw7LNN2PCzvmXPuo4RC+4JTvtgO0sGDF8sipUtsw7Oe0cmmXTqMV+LI8 WLW3/Qtz8azhJvD0fEZNyq1XqAZTnHoQwU/iL3bUHf01vxMLt/LSZu8ppeAufMDaW7q8 in6WRVlgAobNngjbSuq35cr4vTBcyiHGIWrphyT2zbFIQe7fHqKm1rjUMjevaCQkdu68 VecW+Y0SENz5+ECxEJKFrVntg9MbXpTXLLXyj4cIlsBHTW6X2xalxc41Ldjsmokayv+u cNnQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u3si2207381edo.526.2020.04.28.13.16.41; Tue, 28 Apr 2020 13:17:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726333AbgD1UNA (ORCPT + 99 others); Tue, 28 Apr 2020 16:13:00 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:46617 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726279AbgD1UNA (ORCPT ); Tue, 28 Apr 2020 16:13:00 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.145]) with ESMTPA (Nemesis) id 1MDPqi-1jMP2o3Hzq-00ATWb; Tue, 28 Apr 2020 22:12:36 +0200 From: Arnd Bergmann To: Christoph Hellwig Cc: Arnd Bergmann , Andrew Morton , Alexander Viro , Jeremy Kerr , "Eric W . Biederman" , linuxppc-dev@lists.ozlabs.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] fixup! signal: factor copy_siginfo_to_external32 from copy_siginfo_to_user32 Date: Tue, 28 Apr 2020 21:56:26 +0200 Message-Id: <20200428195645.1365019-1-arnd@arndb.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200428074827.GA19846@lst.de> References: <20200428074827.GA19846@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:BfAvDKI9SSwe2+766/MLLDP63p+G4VcCD7Yw0qKaGd8OUqaUT93 dwH8xVn4vZsTRFeogGQBryDkMAtZhL/IwptYefT+c2aXPjcEz5uTnU2EG4jQFqC7tXJu6aI zCBIqYyBnd7fw9eQBUeGBrjuXIv5c7SEEMf1FJ2sh6kYQdnfTdA0fGrL+AZjCrwKtkdpY6R 90AVtj8sxaI5oar4YkYug== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:1tDfrCfOWcg=:ovEhwjJ6ujR0mMOB5D8EOH B5zD5kobkoVigp1N2g4eMDKMxOSadhJbGhdEw0CQVDJ1vkyvIv6W+pSeWcNE66pBl4VBGQ/c/ bS74pjPam9DQBuT9Y5m2o7J92y8bl98lMWvWSG3m6vh3sE0G5BsPXMP4yPxDL8Qsgxfn2FZQX 6VZORuKsnB4wTAt5gaJTP7b0LoUuz4jt+GQhpbRiSyMqyxCPVtstT8DZ1oL8leQ6gzgO3hHli 2WNSw3PeHQT2e8gQamUauF1zfzvEq1ofp4di5MHNGvDGdQJWJJHk4XR+5JYvcI6N70d2HFt2/ 8bgn3YwxpkfetX3aJdVazMk9L6u4q+QbyEW2c27f9EFLLduOeAsAB7aikO//xxpt+7AUAPZhc sDjYu7kiv6OtK006xBC3w3qdcyoYJVCvI2Ce3FscGMbXbs/JKKeZU7iRGvpcNZe/+EuDcz77n /FAI6PG5Bhosqa1rIuEvqljEvQSxMU13CxliZJjllvYWIyaSmUMyfksAxzmxkqaFCmxWA6TuU PKZ4dgBLueswpTEfvx61h9RbqlJgedfW9UQkUrKzDSy5b5V5D0f3FYeE9LaRJ1miBotCfHkys /krTikRNKotidsbOYcjjwzxVclZZaY1h0Ji+ypppPVvqHaxqOwXKQo1r1Nr3EIbr4iOuQgr/W HYpHhTAHcVkyfQ6e2CSlaLXFjSuNiaPcDSd/RV1Wc2yFXrLdoIvFk2SXacgY3mr6Iu4mB4Glt tdEgJv/7xdpAsIUqVwsx42CGS71Mr5aVOmQsOuBw1/BDPITZyd2WFgQNVJsIOHtZ82TlWg2SG ec3W+ApX2f478booY6auUhabsLFhMrGLs2P0XdFUENiaJqXPTk= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I think I found a way to improve the x32 handling: This is a simplification over Christoph's "[PATCH 2/7] signal: factor copy_siginfo_to_external32 from copy_siginfo_to_user32", reducing the x32 specifics in the common code to a single #ifdef/#endif check, in order to keep it more readable for everyone else. Christoph, if you like it, please fold into your patch. Cc: Andrew Morton Cc: Alexander Viro Cc: Jeremy Kerr Cc: Arnd Bergmann Cc: "Eric W . Biederman" Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-fsdevel@vger.kernel.org Signed-off-by: Arnd Bergmann --- arch/x86/include/asm/compat.h | 10 ++++++++++ arch/x86/kernel/signal.c | 23 +++++++++++++++++++++++ kernel/signal.c | 15 ++------------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h index 52e9f3480f69..9341ea3da757 100644 --- a/arch/x86/include/asm/compat.h +++ b/arch/x86/include/asm/compat.h @@ -214,7 +214,17 @@ static inline bool in_compat_syscall(void) #endif struct compat_siginfo; +#ifdef CONFIG_X86_X32_ABI int __copy_siginfo_to_user32(struct compat_siginfo __user *to, const kernel_siginfo_t *from, bool x32_ABI); +#else +int copy_siginfo_to_user32(struct compat_siginfo __user *to, + const kernel_siginfo_t *from); +static inline int __copy_siginfo_to_user32(struct compat_siginfo __user *to, + const kernel_siginfo_t *from, bool x32_ABI) +{ + return copy_siginfo_to_user32(to, from); +} +#endif #endif /* _ASM_X86_COMPAT_H */ diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index 83b74fb38c8f..0e166571d28b 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c @@ -511,6 +511,29 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, } #endif /* CONFIG_X86_32 */ +#ifdef CONFIG_X86_X32_ABI +int copy_siginfo_to_user32(struct compat_siginfo __user *to, + const struct kernel_siginfo *from) +{ + return __copy_siginfo_to_user32(to, from, in_x32_syscall()); +} + +int __copy_siginfo_to_user32(struct compat_siginfo __user *to, + const struct kernel_siginfo *from, bool x32_ABI) +{ + struct compat_siginfo new; + + copy_siginfo_to_external32(&new, from); + if (x32_ABI && from->si_signo == SIGCHLD) { + new._sifields._sigchld_x32._utime = from->si_utime; + new._sifields._sigchld_x32._stime = from->si_stime; + } + if (copy_to_user(to, &new, sizeof(struct compat_siginfo))) + return -EFAULT; + return 0; +} +#endif + static int x32_setup_rt_frame(struct ksignal *ksig, compat_sigset_t *set, struct pt_regs *regs) diff --git a/kernel/signal.c b/kernel/signal.c index 1a81602050b4..935facca4860 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3318,29 +3318,18 @@ void copy_siginfo_to_external32(struct compat_siginfo *to, } } +#ifndef CONFIG_X86_X32_ABI int copy_siginfo_to_user32(struct compat_siginfo __user *to, const struct kernel_siginfo *from) -#if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION) -{ - return __copy_siginfo_to_user32(to, from, in_x32_syscall()); -} -int __copy_siginfo_to_user32(struct compat_siginfo __user *to, - const struct kernel_siginfo *from, bool x32_ABI) -#endif { struct compat_siginfo new; copy_siginfo_to_external32(&new, from); -#ifdef CONFIG_X86_X32_ABI - if (x32_ABI && from->si_signo == SIGCHLD) { - new._sifields._sigchld_x32._utime = from->si_utime; - new._sifields._sigchld_x32._stime = from->si_stime; - } -#endif if (copy_to_user(to, &new, sizeof(struct compat_siginfo))) return -EFAULT; return 0; } +#endif static int post_copy_siginfo_from_user32(kernel_siginfo_t *to, const struct compat_siginfo *from) -- 2.26.0