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=-3.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=no 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 D8723C433E0 for ; Thu, 21 May 2020 15:23:21 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A23E620826 for ; Thu, 21 May 2020 15:23:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A23E620826 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0EFAF8000B; Thu, 21 May 2020 11:23:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A2B68000A; Thu, 21 May 2020 11:23:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E36EE8000B; Thu, 21 May 2020 11:23:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0214.hostedemail.com [216.40.44.214]) by kanga.kvack.org (Postfix) with ESMTP id C68378000A for ; Thu, 21 May 2020 11:23:17 -0400 (EDT) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 74DBF8248047 for ; Thu, 21 May 2020 15:23:17 +0000 (UTC) X-FDA: 76841094834.17.queen90_56debb47ffc0d X-HE-Tag: queen90_56debb47ffc0d X-Filterd-Recvd-Size: 2715 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf42.hostedemail.com (Postfix) with ESMTP for ; Thu, 21 May 2020 15:23:16 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0546BD6E; Thu, 21 May 2020 08:23:16 -0700 (PDT) Received: from e112269-lin.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 64EE13F305; Thu, 21 May 2020 08:23:14 -0700 (PDT) From: Steven Price To: Andrew Morton , Andy Lutomirski , Borislav Petkov , Dave Hansen , Ingo Molnar , Peter Zijlstra , Thomas Gleixner , x86@kernel.org, Jan Beulich Cc: Steven Price , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 0/2] Fix W+X debug feature on x86 Date: Thu, 21 May 2020 16:23:06 +0100 Message-Id: <20200521152308.33096-1-steven.price@arm.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: Jan alert me[1] that the W+X detection debug feature was broken in x86 by my change[2] to switch x86 to use the generic ptdump infrastructure. Fundamentally the approach of trying to move the calculation of effective permissions into note_page() was broken because note_page() is only called for 'leaf' entries and the effective permissions are passed down via the internal nodes of the page tree. The solution I've taken here is to create a new (optional) callback which is called for all nodes of the page tree and therefore can calculate the effective permissions. Secondly on some configurations (32 bit with PAE) "unsigned long" is not large enough to store the table entries. The fix here is simple - let's just use a u64. I'd welcome testing (and other comments), especially if you have a configuration which previously triggered W+X warnings as I don't have such a setup. [1] https://lore.kernel.org/lkml/d573dc7e-e742-84de-473d-f971142fa319@sus= e.com/ [2] 2ae27137b2db ("x86: mm: convert dump_pagetables to use walk_page_rang= e") Steven Price (2): x86: mm: ptdump: Calculate effective permissions correctly mm: ptdump: Expand type of 'val' in note_page() arch/arm64/mm/dump.c | 2 +- arch/x86/mm/dump_pagetables.c | 33 ++++++++++++++++++++------------- include/linux/ptdump.h | 3 ++- mm/ptdump.c | 17 ++++++++++++++++- 4 files changed, 39 insertions(+), 16 deletions(-) --=20 2.20.1