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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F1ADECAAA1 for ; Tue, 6 Sep 2022 00:39:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A294F8023B; Mon, 5 Sep 2022 20:39:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D94480224; Mon, 5 Sep 2022 20:39:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8A0F78023B; Mon, 5 Sep 2022 20:39:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7B8DC80224 for ; Mon, 5 Sep 2022 20:39:46 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4BEC7AB9EB for ; Tue, 6 Sep 2022 00:39:46 +0000 (UTC) X-FDA: 79879802772.15.02F6370 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by imf14.hostedemail.com (Postfix) with ESMTP id EDFC5100063 for ; Tue, 6 Sep 2022 00:39:45 +0000 (UTC) Received: by mail-ej1-f43.google.com with SMTP id lx1so19828462ejb.12 for ; Mon, 05 Sep 2022 17:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=i2orbtExQlccm1w/BNraKCbJoQoonFPa3RMVK51xch0=; b=Y1GCnRYVDCZj/JilpGzJOPsi8VHlBxjzp/rCB5CLIbFSPdgUEYE2ahS03ZdUE+sJDU 8NJy4IHaYFrTzV+0+ESZIta0w7sl0uA3Ixc5yMl/YSH1VpLqVsyJq9STwfY4Y1XcSUn7 fbBq6WzStegaXoRA+5Z/afUG5AbMoeZUmJR0Gtp2NitJXBAbyRkwkOdOXtt8tSaLYV9F 5x1lHIiSTQNgbkmTvUG4byhR8u9Slp49luKoi/qlTxzxD0iVLRnhCltvxAQI4U8nWKmn 7wN7hif782eRJ60efS3E1o+O0TxX7axnYh9ZZIAh8Q1va6JJGmXZtGhmZx6oVmotLXFN ZZpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=i2orbtExQlccm1w/BNraKCbJoQoonFPa3RMVK51xch0=; b=E8OXeVV4nFOkG0aAOy45HnMvtQpSn889W3+VStltbAi88+Iv8ZSi7Nar5c+SMk0Sp/ HVKmnCbPsijboqbkHd7bZtEz9FZ+Jzamu8NbK9yexoQlqYHuFD0uZCmRHns5jffn/foq gohrVVOCCa27ZoeMIm000+P1PKB9SY1OF/chA8K9E+mEUSnR04UwPyo3NLLfQlWCYjT6 8XGdyRbBIDkqHQ2MAxD3wwvQv2BioNiYzJdFhLhAG+tqOkJyKtdTS4qd147s+Sf0nvT0 1IkyfcLFX0ie7wkDAR5biy24DSmrE9tsuC1ISwyjW7K5IOx/Pvm0RLOggo5HSYgR/hPo 653A== X-Gm-Message-State: ACgBeo1qQ4bF5xdQxnnUpfLx4HNd/dg8k95pNaT5dz9GMeYSB4NRf6Eq Q76fSEa1whhu+MkE8sahcyR94vASGKcVGX0FsBbXgw== X-Google-Smtp-Source: AA6agR4RCAygHSkj6CSFxAFgn85SGVj7vd8Cf1vH/9LMizTexhPtLommdZzsBHkRcGBXqi7UNa/XJjsBA8iL9cKDGRA= X-Received: by 2002:a17:907:842:b0:731:3310:4187 with SMTP id ww2-20020a170907084200b0073133104187mr35019845ejb.578.1662424784840; Mon, 05 Sep 2022 17:39:44 -0700 (PDT) MIME-Version: 1.0 References: <20220902232732.12358-1-rick.p.edgecombe@intel.com> In-Reply-To: From: Pasha Tatashin Date: Mon, 5 Sep 2022 20:39:07 -0400 Message-ID: Subject: Re: [PATCH] mm: Check writable zero page in page table check To: Rick Edgecombe Cc: Andrew Morton , linux-mm , LKML Content-Type: text/plain; charset="UTF-8" ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=soleen.com header.s=google header.b=Y1GCnRYV; spf=pass (imf14.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1662424785; a=rsa-sha256; cv=none; b=GyPuqWxOEXc97jSJ3jR7ZqA6ZE5AU3qx42woMZh7R0fDjo1mSkMiR7zc9H4z39AlHMerNL gBCo/h88O6vFrQA2JBtD97SAZdCdjtEA8GolOLnjWlXpBWEx1YgBE1r8Yn16STK7kz94ty k5Arq9dtvAAt59KqqVaK5Mz7C/xFip8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1662424785; h=from:from:sender: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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=i2orbtExQlccm1w/BNraKCbJoQoonFPa3RMVK51xch0=; b=UPdrEAjGeU+y67ZM6A1EJ2FesKeZyEDkjCIRmC0s+TtG7wE8aX/7dt1bIzgwxSXAVwAYmL cMlJXfHq4gLwFad7srbtMZeAGECC00A8MITbCpVfGl1JPibgycROclEmn4hRMJGMH1wHEL tJp+EVPj2U5JgeYDwM5fgRWx48dF294= Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=soleen.com header.s=google header.b=Y1GCnRYV; spf=pass (imf14.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com; dmarc=none X-Rspam-User: X-Stat-Signature: yb4ytfi3gqtwrxk4ob7a95cu43gunxaf X-Rspamd-Queue-Id: EDFC5100063 X-Rspamd-Server: rspam05 X-HE-Tag: 1662424785-83457 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: Sorry: s/Rock/Rick :-) On Mon, Sep 5, 2022 at 8:38 PM Pasha Tatashin wrote: > > Hi Rock, > > Good idea to add a check for write access to zero page. Can you please > also update Documentation/mm/page_table_check.rst ? > > Thank you, > Pasha > > On Fri, Sep 2, 2022 at 7:31 PM Rick Edgecombe > wrote: > > > > The zero page should remain all zero, so that it can be mapped as > > read-only for read faults of memory that should be zeroed. If it is ever > > mapped writable to userspace, it could become non-zero and so other apps > > would unexpectedly get non-zero data. So the zero page should never be > > mapped writable to userspace. Check for this condition in > > page_table_check_set(). > > > > Signed-off-by: Rick Edgecombe > > > > --- > > > > Hi, > > > > CONFIG_PAGE_TABLE_CHECK is pretty explicit about what it checks (and > > doesn't mention the zero page), but this condition seems to fit with the > > general category of "pages mapped wrongly to userspace". I added it > > locally to help me debug something. Maybe it's more widely useful. > > > > mm/page_table_check.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/mm/page_table_check.c b/mm/page_table_check.c > > index e2062748791a..665ece0d55d4 100644 > > --- a/mm/page_table_check.c > > +++ b/mm/page_table_check.c > > @@ -102,6 +102,8 @@ static void page_table_check_set(struct mm_struct *mm, unsigned long addr, > > if (!pfn_valid(pfn)) > > return; > > > > + BUG_ON(is_zero_pfn(pfn) && rw); > > + > > page = pfn_to_page(pfn); > > page_ext = lookup_page_ext(page); > > anon = PageAnon(page); > > > > base-commit: b90cb1053190353cc30f0fef0ef1f378ccc063c5 > > -- > > 2.17.1 > >