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 4B858C433EF for ; Thu, 2 Dec 2021 10:06:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C3CAF6B0072; Thu, 2 Dec 2021 05:06:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BEC936B0073; Thu, 2 Dec 2021 05:06:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AB3BB6B0074; Thu, 2 Dec 2021 05:06:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0119.hostedemail.com [216.40.44.119]) by kanga.kvack.org (Postfix) with ESMTP id 9C3FF6B0072 for ; Thu, 2 Dec 2021 05:06:01 -0500 (EST) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 518D01810865E for ; Thu, 2 Dec 2021 10:05:51 +0000 (UTC) X-FDA: 78872422902.11.FA8C292 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf02.hostedemail.com (Postfix) with ESMTP id 33A29700178D for ; Thu, 2 Dec 2021 10:05:49 +0000 (UTC) Received: by mail-ed1-f43.google.com with SMTP id y13so113680455edd.13 for ; Thu, 02 Dec 2021 02:05:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to :content-transfer-encoding; bh=HbzldBUJP1MUNJZO4fQ5VmGc+gsf1iO1NZb/2FiG3ZU=; b=F8u1L+Ljenx6kyukPr1LCqwMNz7sXEx2fDTjVyE2i4FUlt7NaSk+3Klq78pkvSLm2r fG+tm04IThvgb/wLaBjTr/FXO2mZdRZbcPdoVKM1hsiosCNU/93x+GyEJS3gtRaWC8Fq 6c7QA4fVH1fGsAIc/fDu+C0Ek/5zDn411QJrcG5Uc9rJvHrp+yN589/byQlF9FyPni0F eDnee53mGKv8Z5TtA2lu/oUNj0um3Smpjspbpcc37u9IgUGgjMEIUhv0lyw2lxvOmm33 nPvCKmKf+04hfeOOS9cgIAu1z2yTb+rEYJzC/qXRIFTK8pnFtcfr0Lgqx4x37BC3IC8N RcRg== X-Gm-Message-State: AOAM53066GhdBnPBY1U8YpvISwjsHbiBL9oPrBhmzn4zqIzAJiDCC9u8 wiAbxezzWjZ8VQ3T5zEsRZE= X-Google-Smtp-Source: ABdhPJzNq+N4jwOuPIoCKvpLKKUDpk/ZJj48UecZF/uHnYX1nTHZUhIjFXa8yjVHQt/bB469ZPQ9yg== X-Received: by 2002:a17:907:8a1a:: with SMTP id sc26mr14134432ejc.402.1638439549320; Thu, 02 Dec 2021 02:05:49 -0800 (PST) Received: from [192.168.1.49] (185-219-167-24-static.vivo.cz. [185.219.167.24]) by smtp.gmail.com with ESMTPSA id f7sm1780835edl.33.2021.12.02.02.05.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Dec 2021 02:05:48 -0800 (PST) Message-ID: <172f894c-01ab-cd9f-3292-1ba811f7222a@kernel.org> Date: Thu, 2 Dec 2021 11:05:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH 3/3] x86: mm: add x86_64 support for page table check Content-Language: en-US From: Jiri Slaby To: Pasha Tatashin Cc: LKML , linux-mm , Linux Doc Mailing List , Andrew Morton , David Rientjes , Paul Turner , weixugc@google.com, Greg Thelen , Ingo Molnar , Jonathan Corbet , Will Deacon , Mike Rapoport , Kees Cook , Thomas Gleixner , Peter Zijlstra , masahiroy@kernel.org, Sami Tolvanen , Dave Hansen , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , frederic@kernel.org, "H. Peter Anvin" , "Aneesh Kumar K.V" References: <20211123214814.3756047-1-pasha.tatashin@soleen.com> <20211123214814.3756047-4-pasha.tatashin@soleen.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 33A29700178D X-Stat-Signature: 5hzofsiqs7a5a5d6twpjtpxhbjj6qgtk Authentication-Results: imf02.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=none); spf=pass (imf02.hostedemail.com: domain of jirislaby@gmail.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=jirislaby@gmail.com X-HE-Tag: 1638439549-229129 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: On 02. 12. 21, 10:59, Jiri Slaby wrote: > On 01. 12. 21, 14:55, Pasha Tatashin wrote: >> On Wed, Dec 1, 2021 at 3:44 AM Jiri Slaby wrote: >>> >>> On 01. 12. 21, 9:00, Jiri Slaby wrote: >>>> On 23. 11. 21, 22:48, Pasha Tatashin wrote: >>>>> Add page table check hooks into routines that modify user page tables. >>>> >>>> Hi, >>>> >>>> I bisected to this as this causes crashes during modules load: >>> >>> And it's not enough to unset CONFIG_PAGE_TABLE_CHECK_ENFORCED. I had to >>> unset CONFIG_PAGE_TABLE_CHECK completely to get rid of this. >> >> Hi, >> >> Thanks for reporting this. Seems like module load for some reasons >> does not like the static branches. However, I was not able to repro >> this. Could you please share your config and the module that you were >> loading? > > It's the openSUSE's -next config: > https://raw.githubusercontent.com/openSUSE/kernel-source/linux-next/config/x86_64/vanilla > > > But with CONFIG_IWLMEI=n (as that fails to link). > > One has to load i915, other modules (71 on my system) are apparently fine. > > i915 tries to patch your `page_table_check_disabled' which is defined as > `DEFINE_STATIC_KEY_TRUE_RO': > > jump_label_add_module: key=__tracepoint_mmap_lock_released > (ffffffff93f36d88) mod=0000000000000000 > > jump_label_add_module: key=hugetlb_free_vmemmap_enabled_key > (ffffffff94873560) mod=0000000000000000 > > jump_label_add_module: key=devmap_managed_key (ffffffff94902700) > mod=0000000000000000 > > jump_label_add_module: key=page_table_check_disabled > (ffffffff939da760) mod=0000000000000000 > > BUG: unable to handle page fault for address: ffffffff939da768 Provided you EXPORT page_table_check_disabled and it can be used from modules, it can be barely marked as RO. So the below indeed fixes the problem for me: --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -18,7 +18,7 @@ struct page_table_check { static bool __page_table_check_enabled __initdata = IS_ENABLED(CONFIG_PAGE_TABLE_CHECK_ENFORCED); -DEFINE_STATIC_KEY_TRUE_RO(page_table_check_disabled); +DEFINE_STATIC_KEY_TRUE(page_table_check_disabled); EXPORT_SYMBOL(page_table_check_disabled); static int __init early_page_table_check_param(char *buf) > > regards, -- js suse labs