From patchwork Thu May 4 17:09:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florent Revest X-Patchwork-Id: 13231420 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F2ADC77B78 for ; Thu, 4 May 2023 17:10:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E6552900002; Thu, 4 May 2023 13:10:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E153F6B0081; Thu, 4 May 2023 13:10:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D2C1E900002; Thu, 4 May 2023 13:10:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by kanga.kvack.org (Postfix) with ESMTP id 9F5B16B0080 for ; Thu, 4 May 2023 13:10:08 -0400 (EDT) Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-3f1958d3a53so8170015e9.0 for ; Thu, 04 May 2023 10:10:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1683220208; x=1685812208; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=cTpvEiosV1q0JWnkoeAHKjXmXojYH9L1RV1Ai4BYwtc=; b=HMvvC/c+u6SUB3jBk7xrcdUvj5q2RToJwmXxDE5z6sVZmnbqTbv6vuNLC4ZI3JY0+L Ft0j0CdooqcxCP7vQxASBQkyoqw5+JMCXmg2oztQ1c4Di3cLCTSHd6k74c4tB/C0niGL Mj2wqb7AKJ1ReiqLLRqU4KbU4zCvXM+pqvc7U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683220208; x=1685812208; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cTpvEiosV1q0JWnkoeAHKjXmXojYH9L1RV1Ai4BYwtc=; b=Si050NGs0KjFXQNH26U9Xjf0mMXIqcqNKhJC4uYH8ONpH+agEmYHteWBbsesvvOBdE UDWy3XBG6z12vdq//PRr+ql/GXDr4L004TpiZKJb1iZ0Vm8wEAWU6tWKwrI3Kj84mv81 DH1ejo0+YOrUJx9C59JH9fAKs4M1j4NIbEQH8XxkUvsO0mClUaLzSpUHdjD/KKbosD1k NgFvuuy9/+M3Y5ODwfrrO4I4AMWmnXl6tphXEphaW2wbAQbvmcGQF2j/fXrRGbAEbVf6 NrTLRZMLcA2e6mncZLDhwrd3yoMqJavf2swOBw2lLRISn6sESIqr5/rHbVkzRcXANM8T e60w== X-Gm-Message-State: AC+VfDwZqCC+JoezXQxUxMSllmkApZ+VF3TkcD3cMk6GPSNsDUoy16LA A9iQqe8Z1ETDGbaF4/mWerftoQ== X-Google-Smtp-Source: ACHHUZ5iyaumrXazVbcbVUI9hzdM/OgURD445vCG2tRGnCDFV4yqXhKLLF9ztuOsbnaKLoYPDkNjDQ== X-Received: by 2002:a7b:c8c3:0:b0:3f2:5028:a558 with SMTP id f3-20020a7bc8c3000000b003f25028a558mr336713wml.0.1683220207691; Thu, 04 May 2023 10:10:07 -0700 (PDT) Received: from revest.zrh.corp.google.com ([2a00:79e0:9d:6:c740:f74d:132c:ca99]) by smtp.gmail.com with ESMTPSA id q3-20020a1cf303000000b003f3157988f8sm5447895wmq.26.2023.05.04.10.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 May 2023 10:10:07 -0700 (PDT) From: Florent Revest To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: akpm@linux-foundation.org, catalin.marinas@arm.com, anshuman.khandual@arm.com, joey.gouly@arm.com, mhocko@suse.com, keescook@chromium.org, david@redhat.com, peterx@redhat.com, izbyshev@ispras.ru, nd@arm.com, broonie@kernel.org, szabolcs.nagy@arm.com, Florent Revest Subject: [PATCH 0/4] MDWE without inheritance Date: Thu, 4 May 2023 19:09:38 +0200 Message-ID: <20230504170942.822147-1-revest@chromium.org> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog MIME-Version: 1.0 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: Joey recently introduced a Memory-Deny-Write-Executable (MDWE) prctl which tags current with a flag that prevents pages that were previously not executable from becoming executable. This tag always gets inherited by children tasks. (it's in MMF_INIT_MASK) At Google, we've been using a somewhat similar downstream patch for a few years now. To make the adoption of this feature easier, we've had it support a mode in which the W^X flag does not propagate to children. For example, this is handy if a C process which wants W^X protection suspects it could start children processes that would use a JIT. I'd like to align our features with the upstream prctl. This series proposes a new NO_INHERIT flag to the MDWE prctl to make this kind of adoption easier. It sets a different flag in current that is not in MMF_INIT_MASK and which does not propagate. As part of looking into MDWE, I also fixed a couple of things in the MDWE test. Florent Revest (4): kselftest: vm: Fix tabs/spaces inconsistency in the mdwe test kselftest: vm: Fix mdwe's mmap_FIXED test case mm: Add a NO_INHERIT flag to the PR_SET_MDWE prctl kselftest: vm: Add tests for no-inherit memory-deny-write-execute include/linux/mman.h | 8 +- include/linux/sched/coredump.h | 1 + include/uapi/linux/prctl.h | 1 + kernel/sys.c | 29 +++++-- tools/include/uapi/linux/prctl.h | 1 + tools/testing/selftests/mm/mdwe_test.c | 110 +++++++++++++++++++++---- 6 files changed, 128 insertions(+), 22 deletions(-)