From patchwork Mon May 14 08:56:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ingo Molnar X-Patchwork-Id: 10397515 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 66B1B60216 for ; Mon, 14 May 2018 08:56:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 524B128736 for ; Mon, 14 May 2018 08:56:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46E2E28EB6; Mon, 14 May 2018 08:56:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: * X-Spam-Status: No, score=1.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, FSL_HELO_FAKE,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,T_DKIM_INVALID autolearn=no version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BA27728736 for ; Mon, 14 May 2018 08:56:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9258D6B000A; Mon, 14 May 2018 04:56:28 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8D4AA6B000C; Mon, 14 May 2018 04:56:28 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7EB546B000D; Mon, 14 May 2018 04:56:28 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-wr0-f200.google.com (mail-wr0-f200.google.com [209.85.128.200]) by kanga.kvack.org (Postfix) with ESMTP id 26D2B6B000A for ; Mon, 14 May 2018 04:56:28 -0400 (EDT) Received: by mail-wr0-f200.google.com with SMTP id l6-v6so8930264wrn.17 for ; Mon, 14 May 2018 01:56:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:sender:date:from:to:cc:subject :message-id:references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=IxUL1LUxdA/12rl0aWz1+0oa+PMWh1zG5qX3CdYC50Y=; b=LYjs5QunL+L/dWHoT/tX9GPOBvmOT1eTbWZO2x2cVjapghFlGjHjbW+W7oNgmzRNZ3 0Di0p1p7nM4EF4LMyuP03s2qX/D95qVgEIaGebNy/2lSQm2DYmYVHSQNnNQxR8WtlRuF e8RUZmmwoWF0pR6GU+vb7cjUPgOLCap3NVxDIpvuD/EJSWD+ozqVFyV6AAOw5dfbXIqc h0nP7VTMDhmGPNUPFGF7HNy3f82GVvJFmbQqUdN4bmVN+OJyR3/+XMq3N27MnbObru+A YiNm2vHTSQP7bGr+Hlz4hoNHFNFPnjvTw/zL/cEWe85JHCr39ltoR7DOhF9fXOu33UKk D3+Q== X-Gm-Message-State: ALKqPwdm8myTWtpCGyNBv/W3ch/NoAyEz6dZUJGWkQ9xr3h4oZX11Lpe VE1qpxmmEVa52aUGH4XxwibI0ix2NV+XJNFSFZwYe+ZoU3a7c9h6B8XXNO2xwUn5AMOShvAMNID a0ycjG40uskIILjVy6vRyd8fUX8KTU8oay5elsmOwLfforz34UcyjiT3C+RFbtyvoUpbW+RPZ8y 4xSHH9sADXV1yVzxnJDPIZDBapsAWZ6tgW1jM6ZjLAgR7rnX+kE3aA8eMXxJ7prPdyOL+izUxKA 7bF6MKGAuSs4sRF8G4mVntFqIGImK62PHktSaIF2uazQds1l1Ys0PMc47cUhr0YOeBNvFS7eHI4 GJNuEMiVjf8H76uRA2VHeHCJ1PCekLlXNbUN8KokZtDtJNCLeItZT6aNExpR+ogzl18xKA/hkw= = X-Received: by 2002:adf:e802:: with SMTP id o2-v6mr6838583wrm.123.1526288187720; Mon, 14 May 2018 01:56:27 -0700 (PDT) X-Received: by 2002:adf:e802:: with SMTP id o2-v6mr6838539wrm.123.1526288186880; Mon, 14 May 2018 01:56:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526288186; cv=none; d=google.com; s=arc-20160816; b=CWWH0PWlYgYKaPKeU8D8TDjjJHahQ+25U+2fHv2vsQ3Hj+XfsqnT/XGVjiAJr2BNwV pbhz9kdIAH4/DxjnPS82e8ucu68tiJpC0xojPJuahhktfvapt2WqdslKMNIngWNuzVLc ThIZ4gC9ZvoTnxmeihUu/Mnt155Qu2zL5OWyHXZ0cWNAr9eDabbo2QQeMsBIxfT6Xo5I dM4GyUF22qBlUNuQE+i639wL7l6ZQ8PW6SsTEzvoznNdl6u9UkqnW7EzSty+1yZ7DcFU A+kmPV7nkUvsTgnTp0T4MTC87SiVe6CSWMCc06lll59I4V2WZgUKoeM326+KpVwrnEl4 u7BQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:sender:dkim-signature:arc-authentication-results; bh=IxUL1LUxdA/12rl0aWz1+0oa+PMWh1zG5qX3CdYC50Y=; b=HEryhPo9Ad7dYzuZRZtA+IxgjJEpkdsGPOVsSjew82kofzEeOlntQ0y2knkZnohgLJ OPJ6nw1o+5Obq/LECezbGfEojHa5tHPBH8JtAaZ/+7YPVRandI/SNX6QcG7xAoTjmLSA kiMFSkj9qbeHPSaKTwFreiJ2fNEit847lyr2mYa3nSy6Wh/KciGF3iy47b3yxuAHrtBe 8Xhb/69mYRgGROw7aG5opRZIk9Ch+abNk8rvwFh4MJxwTlZbR5r9j9vlbboGwq/8RDFH f6Wm/+pL6r8AAPHwtAQ+J+0E+bJf9tNW0zNdq+9e/NF6EPS6a4yePLA1J4mizhuKCU4y nxdQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=A+1Ed1qF; spf=pass (google.com: domain of mingo.kernel.org@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=mingo.kernel.org@gmail.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id i15-v6sor1288974wmg.49.2018.05.14.01.56.26 for (Google Transport Security); Mon, 14 May 2018 01:56:26 -0700 (PDT) Received-SPF: pass (google.com: domain of mingo.kernel.org@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=A+1Ed1qF; spf=pass (google.com: domain of mingo.kernel.org@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=mingo.kernel.org@gmail.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=IxUL1LUxdA/12rl0aWz1+0oa+PMWh1zG5qX3CdYC50Y=; b=A+1Ed1qFrHfq+zv1ad9cEGaKBQGJVfKt8A0ko3d/lzUsxKd0+tY89WJKMiZFo+RdQ4 tBa86zzPuilM0iuyb5h8wBFKaXEEzplCKp4tGcZF6SH0SFIV4XCcEpomD1udNWNRhwU9 rFrByjzKpNk5i6AXVZL+r77fhAePYQcT+6wnfWpb3DmKd50EPftT/q4sXEAgcAhKoMlK doZg5lqgWs4fq0TQr8482A4vBhOcMais2Ep0iKm31prdjH8odT665JITVo+eETb6jNwO 2zx6ANmac67tvCE192OOPddm4RkS7xx7U8Q2wf0zPVbMfpHTmV/tMp4q2I5gpJ+yTYO2 L/oQ== X-Google-Smtp-Source: AB8JxZp+7CC/D9OIOgowSPliss2T/qliEoIYqGx+f8iqkxn1wqBw0nbTDYzt4emiz4XIpOPEBD8rcw== X-Received: by 2002:a1c:904b:: with SMTP id s72-v6mr4432815wmd.85.1526288186490; Mon, 14 May 2018 01:56:26 -0700 (PDT) Received: from gmail.com (2E8B0CD5.catv.pool.telekom.hu. [46.139.12.213]) by smtp.gmail.com with ESMTPSA id v12-v6sm9703733wrm.68.2018.05.14.01.56.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 May 2018 01:56:25 -0700 (PDT) Date: Mon, 14 May 2018 10:56:23 +0200 From: Ingo Molnar To: Dave Hansen Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linuxram@us.ibm.com, tglx@linutronix.de, dave.hansen@intel.com, mpe@ellerman.id.au, akpm@linux-foundation.org, shuah@kernel.org, shakeelb@google.com Subject: [PATCH] x86/pkeys/selftests: Adjust the self-test to fresh distros that export the pkeys ABI Message-ID: <20180514085623.GB7094@gmail.com> References: <20180509171336.76636D88@viggo.jf.intel.com> <20180514082918.GA21574@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180514082918.GA21574@gmail.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Ubuntu 18.04 started exporting pkeys details in header files, resulting in build failures and warnings in the pkeys self-tests: protection_keys.c:232:0: warning: "SEGV_BNDERR" redefined protection_keys.c:387:5: error: conflicting types for ‘pkey_get’ protection_keys.c:409:5: error: conflicting types for ‘pkey_set’ ... Fix these namespace conflicts and double definitions, plus also clean up the ABI definitions to make it all a bit more readable ... Signed-off-by: Ingo Molnar --- tools/testing/selftests/x86/protection_keys.c | 67 ++++++++++++++++----------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/x86/protection_keys.c b/tools/testing/selftests/x86/protection_keys.c index f15aa5a76fe3..bbe80a5c31c7 100644 --- a/tools/testing/selftests/x86/protection_keys.c +++ b/tools/testing/selftests/x86/protection_keys.c @@ -191,26 +191,30 @@ void lots_o_noops_around_write(int *write_to_me) #ifdef __i386__ #ifndef SYS_mprotect_key -# define SYS_mprotect_key 380 +# define SYS_mprotect_key 380 #endif + #ifndef SYS_pkey_alloc -# define SYS_pkey_alloc 381 -# define SYS_pkey_free 382 +# define SYS_pkey_alloc 381 +# define SYS_pkey_free 382 #endif -#define REG_IP_IDX REG_EIP -#define si_pkey_offset 0x14 + +#define REG_IP_IDX REG_EIP +#define si_pkey_offset 0x14 #else #ifndef SYS_mprotect_key -# define SYS_mprotect_key 329 +# define SYS_mprotect_key 329 #endif + #ifndef SYS_pkey_alloc -# define SYS_pkey_alloc 330 -# define SYS_pkey_free 331 +# define SYS_pkey_alloc 330 +# define SYS_pkey_free 331 #endif -#define REG_IP_IDX REG_RIP -#define si_pkey_offset 0x20 + +#define REG_IP_IDX REG_RIP +#define si_pkey_offset 0x20 #endif @@ -225,8 +229,14 @@ void dump_mem(void *dumpme, int len_bytes) } } -#define SEGV_BNDERR 3 /* failed address bound checks */ -#define SEGV_PKUERR 4 +/* Failed address bound checks: */ +#ifndef SEGV_BNDERR +# define SEGV_BNDERR 3 +#endif + +#ifndef SEGV_PKUERR +# define SEGV_PKUERR 4 +#endif static char *si_code_str(int si_code) { @@ -393,10 +403,15 @@ pid_t fork_lazy_child(void) return forkret; } -#define PKEY_DISABLE_ACCESS 0x1 -#define PKEY_DISABLE_WRITE 0x2 +#ifndef PKEY_DISABLE_ACCESS +# define PKEY_DISABLE_ACCESS 0x1 +#endif + +#ifndef PKEY_DISABLE_WRITE +# define PKEY_DISABLE_WRITE 0x2 +#endif -u32 pkey_get(int pkey, unsigned long flags) +static u32 hw_pkey_get(int pkey, unsigned long flags) { u32 mask = (PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE); u32 pkru = __rdpkru(); @@ -418,7 +433,7 @@ u32 pkey_get(int pkey, unsigned long flags) return masked_pkru; } -int pkey_set(int pkey, unsigned long rights, unsigned long flags) +static int hw_pkey_set(int pkey, unsigned long rights, unsigned long flags) { u32 mask = (PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE); u32 old_pkru = __rdpkru(); @@ -452,15 +467,15 @@ void pkey_disable_set(int pkey, int flags) pkey, flags); pkey_assert(flags & (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)); - pkey_rights = pkey_get(pkey, syscall_flags); + pkey_rights = hw_pkey_get(pkey, syscall_flags); - dprintf1("%s(%d) pkey_get(%d): %x\n", __func__, + dprintf1("%s(%d) hw_pkey_get(%d): %x\n", __func__, pkey, pkey, pkey_rights); pkey_assert(pkey_rights >= 0); pkey_rights |= flags; - ret = pkey_set(pkey, pkey_rights, syscall_flags); + ret = hw_pkey_set(pkey, pkey_rights, syscall_flags); assert(!ret); /*pkru and flags have the same format */ shadow_pkru |= flags << (pkey * 2); @@ -468,8 +483,8 @@ void pkey_disable_set(int pkey, int flags) pkey_assert(ret >= 0); - pkey_rights = pkey_get(pkey, syscall_flags); - dprintf1("%s(%d) pkey_get(%d): %x\n", __func__, + pkey_rights = hw_pkey_get(pkey, syscall_flags); + dprintf1("%s(%d) hw_pkey_get(%d): %x\n", __func__, pkey, pkey, pkey_rights); dprintf1("%s(%d) pkru: 0x%x\n", __func__, pkey, rdpkru()); @@ -483,24 +498,24 @@ void pkey_disable_clear(int pkey, int flags) { unsigned long syscall_flags = 0; int ret; - int pkey_rights = pkey_get(pkey, syscall_flags); + int pkey_rights = hw_pkey_get(pkey, syscall_flags); u32 orig_pkru = rdpkru(); pkey_assert(flags & (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)); - dprintf1("%s(%d) pkey_get(%d): %x\n", __func__, + dprintf1("%s(%d) hw_pkey_get(%d): %x\n", __func__, pkey, pkey, pkey_rights); pkey_assert(pkey_rights >= 0); pkey_rights |= flags; - ret = pkey_set(pkey, pkey_rights, 0); + ret = hw_pkey_set(pkey, pkey_rights, 0); /* pkru and flags have the same format */ shadow_pkru &= ~(flags << (pkey * 2)); pkey_assert(ret >= 0); - pkey_rights = pkey_get(pkey, syscall_flags); - dprintf1("%s(%d) pkey_get(%d): %x\n", __func__, + pkey_rights = hw_pkey_get(pkey, syscall_flags); + dprintf1("%s(%d) hw_pkey_get(%d): %x\n", __func__, pkey, pkey, pkey_rights); dprintf1("%s(%d) pkru: 0x%x\n", __func__, pkey, rdpkru());