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 X-Spam-Level: X-Spam-Status: No, score=-20.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16F38C43460 for ; Thu, 15 Apr 2021 08:37:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DF2C5611CD for ; Thu, 15 Apr 2021 08:37:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231784AbhDOIiK (ORCPT ); Thu, 15 Apr 2021 04:38:10 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:58260 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231590AbhDOIiA (ORCPT ); Thu, 15 Apr 2021 04:38:00 -0400 Date: Thu, 15 Apr 2021 08:37:34 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1618475856; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hDNHrP3ALhoIbXqgfExa+stJYy5WU7PGMrYDWNv0eEw=; b=xdAWeXha2qmG2Wdu1XYCHJw1+7m/uNu5kdtKBIb6uoZryHH7HIwCF9jTcnHQxCo0VlpJuN hNqTqFNg+8etOQ021rZeqHCjLU9RJY/wQQi+aKPa4dyxwvWuoHf7M2JIvvHcCFtNAOD9Zk q46fxwgtl2srettMEwIztPaHKWMpVWuxHPndssBS0KUv7+gAonHe9MAuOwfNRLeAEtXLHL 8AzQRXNm70J/icAhEVwdxL0N3FnD3cOEsWy9fF+liQmdwdWpTjVjqHAE7YcdwnstFtkJSk bYu20Zl2J6NXXax7fPw82R5kn59duhdmt1KHuYsifsgFsUpMU4Tms2e6XPA3QA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1618475856; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hDNHrP3ALhoIbXqgfExa+stJYy5WU7PGMrYDWNv0eEw=; b=n73TUQAnjI4B9ZJax6mKSjb4wqlmHKYc+LIeORI5xh+M4rC0/Swf7YQNwrgzNGI7LEwdTd dPDZHovQdJu/ctAw== From: "tip-bot2 for Eric Dumazet" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: sched/core] rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs() Cc: Eric Dumazet , "Peter Zijlstra (Intel)" , Mathieu Desnoyers , x86@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <20210413203352.71350-4-eric.dumazet@gmail.com> References: <20210413203352.71350-4-eric.dumazet@gmail.com> MIME-Version: 1.0 Message-ID: <161847585417.29796.13325097988570422172.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the sched/core branch of tip: Commit-ID: 5e0ccd4a3b01c5a71732a13186ca110a138516ea Gitweb: https://git.kernel.org/tip/5e0ccd4a3b01c5a71732a13186ca110a138516ea Author: Eric Dumazet AuthorDate: Tue, 13 Apr 2021 13:33:52 -07:00 Committer: Peter Zijlstra CommitterDate: Wed, 14 Apr 2021 18:04:09 +02:00 rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs() Commit ec9c82e03a74 ("rseq: uapi: Declare rseq_cs field as union, update includes") added regressions for our servers. Using copy_from_user() and clear_user() for 64bit values is suboptimal. We can use faster put_user() and get_user() on 64bit arches. Signed-off-by: Eric Dumazet Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Mathieu Desnoyers Link: https://lkml.kernel.org/r/20210413203352.71350-4-eric.dumazet@gmail.com --- kernel/rseq.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/rseq.c b/kernel/rseq.c index cfe01ab..35f7bd0 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c @@ -127,8 +127,13 @@ static int rseq_get_rseq_cs(struct task_struct *t, struct rseq_cs *rseq_cs) u32 sig; int ret; +#ifdef CONFIG_64BIT + if (get_user(ptr, &t->rseq->rseq_cs.ptr64)) + return -EFAULT; +#else if (copy_from_user(&ptr, &t->rseq->rseq_cs.ptr64, sizeof(ptr))) return -EFAULT; +#endif if (!ptr) { memset(rseq_cs, 0, sizeof(*rseq_cs)); return 0; @@ -211,9 +216,13 @@ static int clear_rseq_cs(struct task_struct *t) * * Set rseq_cs to NULL. */ +#ifdef CONFIG_64BIT + return put_user(0UL, &t->rseq->rseq_cs.ptr64); +#else if (clear_user(&t->rseq->rseq_cs.ptr64, sizeof(t->rseq->rseq_cs.ptr64))) return -EFAULT; return 0; +#endif } /*