From patchwork Fri Nov 8 21:12:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 178982 Delivered-To: patch@linaro.org Received: by 2002:a92:38d5:0:0:0:0:0 with SMTP id g82csp3293612ilf; Fri, 8 Nov 2019 13:18:50 -0800 (PST) X-Google-Smtp-Source: APXvYqyXh6w89m7m7XJjnU2X+AScFXUCGtajtqE8i49W1IpmFzXtQQSbPbih0M5MiUnS2MwpR30+ X-Received: by 2002:a50:fa83:: with SMTP id w3mr12590718edr.272.1573247930183; Fri, 08 Nov 2019 13:18:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573247930; cv=none; d=google.com; s=arc-20160816; b=IY4nyG6vZs+S7VKJo2bxiPMo/RrGn3/T9UjhP59yvdoULJd7BDRSvyHOvxRVwSYDuN BsPYrbFa4gnVGPm2QgFk8oSFCYVWTFXcP7AY9bt5Bgqto90qAQmthP82T52SFemJ/NeI +5dunqTJdgvy08ekrynAwkaadKv6kMemXm3r2kjaVYlMETvTckVSEwAGfPpALz54lE+Z Gj5EXsCeiFyayIRGyS6uOh1r0T3xf6Ce3HHh1OXNqHIqZuzpsVcFUz0CgXcYvNcsOvP+ 3bsqttPQmRIqSypZxLv+TIUqabcxNmzcXOQ6Z3a/EHtuBGgEQJskOvqcmVgPESmFbjUn unWQ== 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=tJOebbddoVLK2BWaxg4NfDCLUovpEDVFDxGsTGc7qeM=; b=zfZGGMariL4u5vrkU6ICnxbBDMdpgv/yUBFyFPBn5BKa574OJzbRuBrtVJSE3ahGul 2sW20+W+/uAW9dKSf0b7FSKQ2KY8P5YHK3vh3c0YunnAyG45dOIjEgXa7fPCHdEzIeRb O7n7iMKYty8oh3NAT7BQL8HtAlwmLg6T7PtiSeB9ZyLAvY6Mn19PjwTcjSirjOnnDHvm 2miC94Lgz6mUMHuoqBdpKswbNle2Pb42s/xIgheRxPPdug7hiNTRRRygesLMQLmrOkTa aXsNhK+nyQdKM0lTJHGKILnWELwxqHcPiUxWBlDZh6LzU1rS7GEySiAF6qxKQ44ngT7B ijEA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r12si6674419edi.272.2019.11.08.13.18.49; Fri, 08 Nov 2019 13:18:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729832AbfKHVSr (ORCPT + 26 others); Fri, 8 Nov 2019 16:18:47 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:44607 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726819AbfKHVSr (ORCPT ); Fri, 8 Nov 2019 16:18:47 -0500 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1M7bJ5-1iYOAj2BGX-0080Jg; Fri, 08 Nov 2019 22:18:12 +0100 From: Arnd Bergmann To: y2038@lists.linaro.org, John Stultz , Thomas Gleixner , Paul Moore , Stephen Smalley , Eric Paris Cc: linux-kernel@vger.kernel.org, Arnd Bergmann , Stephen Boyd , Sebastian Andrzej Siewior , Ingo Molnar , Anna-Maria Gleixner , Al Viro , Ondrej Mosnacek , selinux@vger.kernel.org Subject: [PATCH 20/23] y2038: move itimer reset into itimer.c Date: Fri, 8 Nov 2019 22:12:19 +0100 Message-Id: <20191108211323.1806194-11-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20191108210236.1296047-1-arnd@arndb.de> References: <20191108210236.1296047-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:cftdQ2oVdyPSduyUoNgNl7M3dzVudAM9sTy5LloysVNTgOb6AnF rWXqgtgdMd4tNJEO8Zptvt6Ij2R8xkhKKyx8MAw0emvUWvRDDzLVMiXiGc0I0Ak8jDONE2Y l5AOm3FG0hq9BgEFNNf9atKgw9RpMbzswxCdlNS7MU/Qa8TAuhE5a379xft8BHVxVDKJOOr 6MDtEPF3z3KPkkPP8Negw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:pumRZ9ygdRQ=:mAfvNHDsRdbjS5FtIwu5tO XmueAej5h3fWLZhrNU75if+MPBoZdFuYGvQoZHcgCcCNb+i2lVUU7yhNGH9iZAC/84ir0vRV2 8E/4uxZG3slPA1Ho4sjlYHj4uv2+w/lWIpRFw0SB6VHBYH4WdSdU7RHySejUKJ0182g6VDcfC SRcB0Ix8XkIz64A45fmdM8vyW6Wv5Eoa5hQMHE8+O5fQvZmOtzuHXQrztCAyELsVgBksXeXde RnehV0RRxZivXcsa2G1PW3RsKSHKitz87yswPv8WxX8mt4rrk4whGbIL/XQsJO5vOF86YRylN mX9Y6TMgL2OcAmDD1sU3bxv1wr7t3QRbSgHMk4BtRMsGLSCiF5i3D0100MTkyHfR2qcPxmXjh PJzWDyEOmi48jC0cc6p/Ae1eXEHlRAidvjv/TZK+GdCHzMXE/ciADdM9E/rDgDB+Qyi0Uk6Cl 1zyGlaTfNMFcq/hj8CkTBEJNWRJB3UUJoafDzyMV5qy7YT47k/qUfWIKfTrssB8dgR5KGTz4e dMkLSFs+vU5H1DHKdyYRHlAy9MwfNF7yu9kqWP7D9PbubJiOImgYbm4BfqoORUiwF5t0MtB7p xruKDEOC/DYAezaRkqvTDRd17X+QqgAlzOCGUM8kJ5QDbFWPrjvB82AVCvXEIYWBB2fhb9dbc u7ouRVmtKSxrwz6KqdDeaCcl0IZfa6Kfuwx4flu+JHZLqNncL7UbOkzKe9HeJMLbwZZ37RtuZ ao1nf8cJ70MH1W5hFNkxyc2ltMpHz3PzISPaIKE/xCcZxJ5v61manKOmFAY96Rmi36vSaKKbw tM3TtAxv4y+lceSoYyeq4YO2Pn0U+IO3iiQcIXrsN6OSVZ/nFSTwsT8icbbYhzUuM/bi7YaCY HRW0OOtSH66GYFVyfwlg== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Preparing for a change to the itimer internals, stop using the do_setitimer() symbol and instead use a new higher-level interface. The do_getitimer()/do_setitimer functions can now be made static, allowing the compiler to potentially produce better object code. Signed-off-by: Arnd Bergmann --- include/linux/time.h | 9 +++++---- kernel/time/itimer.c | 15 +++++++++++++-- security/selinux/hooks.c | 10 +++------- 3 files changed, 21 insertions(+), 13 deletions(-) -- 2.20.0 Reviewed-by: Thomas Gleixner diff --git a/include/linux/time.h b/include/linux/time.h index 27d83fd2ae61..0760a4f5a15c 100644 --- a/include/linux/time.h +++ b/include/linux/time.h @@ -35,10 +35,11 @@ extern time64_t mktime64(const unsigned int year, const unsigned int mon, extern u32 (*arch_gettimeoffset)(void); #endif -struct itimerval; -extern int do_setitimer(int which, struct itimerval *value, - struct itimerval *ovalue); -extern int do_getitimer(int which, struct itimerval *value); +#ifdef CONFIG_POSIX_TIMERS +extern void clear_itimer(void); +#else +static inline void clear_itimer(void) {} +#endif extern long do_utimes(int dfd, const char __user *filename, struct timespec64 *times, int flags); diff --git a/kernel/time/itimer.c b/kernel/time/itimer.c index 4664c6addf69..ce9cd19ce72e 100644 --- a/kernel/time/itimer.c +++ b/kernel/time/itimer.c @@ -73,7 +73,7 @@ static void get_cpu_itimer(struct task_struct *tsk, unsigned int clock_id, value->it_interval = ns_to_timeval(interval); } -int do_getitimer(int which, struct itimerval *value) +static int do_getitimer(int which, struct itimerval *value) { struct task_struct *tsk = current; @@ -197,7 +197,7 @@ static void set_cpu_itimer(struct task_struct *tsk, unsigned int clock_id, #define timeval_valid(t) \ (((t)->tv_sec >= 0) && (((unsigned long) (t)->tv_usec) < USEC_PER_SEC)) -int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) +static int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) { struct task_struct *tsk = current; struct hrtimer *timer; @@ -249,6 +249,17 @@ int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) return 0; } +#ifdef CONFIG_SECURITY_SELINUX +void clear_itimer(void) +{ + struct itimerval v = {}; + int i; + + for (i = 0; i < 3; i++) + do_setitimer(i, &v, NULL); +} +#endif + #ifdef __ARCH_WANT_SYS_ALARM /** diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 9625b99e677f..c3f2e89acb87 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2549,9 +2549,8 @@ static void selinux_bprm_committing_creds(struct linux_binprm *bprm) static void selinux_bprm_committed_creds(struct linux_binprm *bprm) { const struct task_security_struct *tsec = selinux_cred(current_cred()); - struct itimerval itimer; u32 osid, sid; - int rc, i; + int rc; osid = tsec->osid; sid = tsec->sid; @@ -2569,11 +2568,8 @@ static void selinux_bprm_committed_creds(struct linux_binprm *bprm) rc = avc_has_perm(&selinux_state, osid, sid, SECCLASS_PROCESS, PROCESS__SIGINH, NULL); if (rc) { - if (IS_ENABLED(CONFIG_POSIX_TIMERS)) { - memset(&itimer, 0, sizeof itimer); - for (i = 0; i < 3; i++) - do_setitimer(i, &itimer, NULL); - } + if (IS_ENABLED(CONFIG_POSIX_TIMERS)) + clear_itimer(); spin_lock_irq(¤t->sighand->siglock); if (!fatal_signal_pending(current)) { flush_sigqueue(¤t->pending);