Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1355381ybt; Thu, 18 Jun 2020 06:54:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxVPzfkNpA2KkmjtntE+EsfSvd69AikifyY1eop6tpM5WJKEC3yef4QUeZfbVrrZ3UkRyhs X-Received: by 2002:a17:906:bcfc:: with SMTP id op28mr3873300ejb.237.1592488457454; Thu, 18 Jun 2020 06:54:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592488457; cv=none; d=google.com; s=arc-20160816; b=nZnlCcJIEUqHlEitP5tEw12ZyIF7npeo+EaSXTUooetql0KuPiuFI4F/7NucZOXDsL hx2Q3v5WvdarYI7ug4sItnWR1G43T/BPNIO+yS0PYVzWY8eKQSoMez7eVTcCOQj6N7Em XcXXGVeVLg/JJyl/sWC9itcqH3gaLg4hG2SvGjsZYXcdmUaX4ee9pW7zUvqgQ+4TdyZK jzb1xJPpJkADH7t7gs1Ms+TK7U9IP39mqL3jKIvFxVbcvPVcRvIe2rn0GMw9cF3uJK4Y jRaV3hwGm9dyq2h5Aq0foDs9QCscjVwWOg9xj64k5caLwWypcolIqoZkL/DtvgxyQfLG 3y+A== 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 :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=3Mv+WsuML5Eh9tcNmuCGdvmtHZsXbOugm6xbQaNS07c=; b=UjXCUoY6oEP+e4LEJtKidcFdQc/Wc/GDuP6L3hYlS90wH4pHPhqPwXbrct7Ml+4JHZ xulTvvHeivv2H8CrKfLHccPl2euM3WiT5SPmQeMG79ssHtjA1GvUrFrvyUiAl0Lleo8N M5HSUH43K1QnAdJnWYOqyFEh653imtTYej9/zIJiH/cB8SzD4JdqyFtnenEeffjWo4DC scxzQGOxEKtFC49Jfky9OSbDbddxTSj70nzEz5sQO3VU+8dXysjrnxoLz1cXs6gnBgBY vAGI1miPyn59CBzXEX7AVmJG0jCUSk2uoaLreazLUcOH1rgusA/3f35KedGYSkzjM1/F Jv5Q== 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 sd5si1927075ejb.84.2020.06.18.06.53.53; Thu, 18 Jun 2020 06:54:17 -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 S1730644AbgFRNvh (ORCPT + 99 others); Thu, 18 Jun 2020 09:51:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730572AbgFRNvJ (ORCPT ); Thu, 18 Jun 2020 09:51:09 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96A14C061794; Thu, 18 Jun 2020 06:51:09 -0700 (PDT) Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jluwR-0002ia-Vi; Thu, 18 Jun 2020 15:50:56 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 8517B1C032F; Thu, 18 Jun 2020 15:50:55 +0200 (CEST) Date: Thu, 18 Jun 2020 13:50:55 -0000 From: "tip-bot2 for Chang S. Bae" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: x86/fsgsbase] selftests/x86/fsgsbase: Test GS selector on ptracer-induced GS base write Cc: Andy Lutomirski , "Chang S. Bae" , Sasha Levin , Thomas Gleixner , Tony Luck , x86 , LKML In-Reply-To: <20200528201402.1708239-16-sashal@kernel.org> References: <20200528201402.1708239-16-sashal@kernel.org> MIME-Version: 1.0 Message-ID: <159248825533.16989.3733631087117185210.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the x86/fsgsbase branch of tip: Commit-ID: 291fd83569e10f3d305cd8adb62f6ec00f759dc6 Gitweb: https://git.kernel.org/tip/291fd83569e10f3d305cd8adb62f6ec00f759dc6 Author: Chang S. Bae AuthorDate: Thu, 28 May 2020 16:14:01 -04:00 Committer: Thomas Gleixner CommitterDate: Thu, 18 Jun 2020 15:47:06 +02:00 selftests/x86/fsgsbase: Test GS selector on ptracer-induced GS base write The test validates that the selector is not changed when a ptracer writes the ptracee's GS base. Originally-by: Andy Lutomirski Signed-off-by: Chang S. Bae Signed-off-by: Sasha Levin Signed-off-by: Thomas Gleixner Reviewed-by: Tony Luck Link: https://lkml.kernel.org/r/20200528201402.1708239-16-sashal@kernel.org --- tools/testing/selftests/x86/fsgsbase.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/x86/fsgsbase.c b/tools/testing/selftests/x86/fsgsbase.c index 15a329d..950a48b 100644 --- a/tools/testing/selftests/x86/fsgsbase.c +++ b/tools/testing/selftests/x86/fsgsbase.c @@ -465,7 +465,7 @@ static void test_ptrace_write_gsbase(void) wait(&status); if (WSTOPSIG(status) == SIGTRAP) { - unsigned long gs, base; + unsigned long gs; unsigned long gs_offset = USER_REGS_OFFSET(gs); unsigned long base_offset = USER_REGS_OFFSET(gs_base); @@ -481,7 +481,6 @@ static void test_ptrace_write_gsbase(void) err(1, "PTRACE_POKEUSER"); gs = ptrace(PTRACE_PEEKUSER, child, gs_offset, NULL); - base = ptrace(PTRACE_PEEKUSER, child, base_offset, NULL); /* * In a non-FSGSBASE system, the nonzero selector will load @@ -489,11 +488,21 @@ static void test_ptrace_write_gsbase(void) * selector value is changed or not by the GSBASE write in * a ptracer. */ - if (gs == 0 && base == 0xFF) { - printf("[OK]\tGS was reset as expected\n"); - } else { + if (gs != *shared_scratch) { nerrs++; - printf("[FAIL]\tGS=0x%lx, GSBASE=0x%lx (should be 0, 0xFF)\n", gs, base); + printf("[FAIL]\tGS changed to %lx\n", gs); + + /* + * On older kernels, poking a nonzero value into the + * base would zero the selector. On newer kernels, + * this behavior has changed -- poking the base + * changes only the base and, if FSGSBASE is not + * available, this may not effect. + */ + if (gs == 0) + printf("\tNote: this is expected behavior on older kernels.\n"); + } else { + printf("[OK]\tGS remained 0x%hx\n", *shared_scratch); } }