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 DFB21C636D7 for ; Mon, 30 Jan 2023 18:21:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A8006B0080; Mon, 30 Jan 2023 13:21:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 762216B0081; Mon, 30 Jan 2023 13:21:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F9756B0082; Mon, 30 Jan 2023 13:21:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 4DB9B6B0080 for ; Mon, 30 Jan 2023 13:21:21 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id BD464A0B4B for ; Mon, 30 Jan 2023 18:21:19 +0000 (UTC) X-FDA: 80412282678.17.F206D48 Received: from mail-vs1-f47.google.com (mail-vs1-f47.google.com [209.85.217.47]) by imf27.hostedemail.com (Postfix) with ESMTP id 0FF884000E for ; Mon, 30 Jan 2023 18:21:17 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ti93R0Fc; spf=pass (imf27.hostedemail.com: domain of glider@google.com designates 209.85.217.47 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675102878; 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=T5TU1Iff8wOSYIuihsNLjPZPQxnxZG9F/TEcr2cj9sU=; b=TyNlUxZUN/dOfPu8VbsyU1Ecvun2Pp6C9HvPZqz+glf9ye1ABdRjUCWbfxci5FXzDEOEPS efrm3Cg4WYHTF80dhXQWF9hfPgM9JSVBSRc8uK3MGiqiDQTb63eCGfL+l+y2vD1BZcXeQP 1eMpCr/cEC4tpaOm4YnpsRgr7IYtghg= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ti93R0Fc; spf=pass (imf27.hostedemail.com: domain of glider@google.com designates 209.85.217.47 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675102878; a=rsa-sha256; cv=none; b=sWOoS1nPVv41IGWj5fr1S+XanmFRhvVtLnaOkku7JMSzIIHxdS7oSJhF8fQGW48QEHI5az +ld4Na3QaFcgSnKR/NGX/z9SwjWVbmvY+ZCTkVgkcoyePwr2n0uinIU9zUPh3Twy0KeayH 7hLptzUTs3Vo0VU2jvttzQVHaP3vGdU= Received: by mail-vs1-f47.google.com with SMTP id e9so5621338vsj.3 for ; Mon, 30 Jan 2023 10:21:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=T5TU1Iff8wOSYIuihsNLjPZPQxnxZG9F/TEcr2cj9sU=; b=ti93R0Fc+NvDLWspUHxQEogucx+0FOTiB/H+4cAOJk5vRHgTA7R5pB9E87KnZH5zmt 2Zx24EluskG4k/8wp8c8SVN9Q1AyigP7DPeCw2v2FkUg10GrzBX1QhNGIKEy/wD9hzVI 8RzOiiRJln9o6Ad4J3BirxJ8qn6YQTuGU9zDmnx+ehyzoZvp/hkavk8GWZCrf/7CVhAY c5EGWAY+gVUDThSD99rRS/BmtLeZW3RSneYxS3JagdrdtQsV7YTwAtgJuAfFpv8IvIoU aSrNSQRShvPrmE83AVu7AJfOUmyQd4dYaxWglelJwX6G/Tm+UW8R/wVB1PTmtrr/KGq4 fYsg== 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:message-id :reply-to; bh=T5TU1Iff8wOSYIuihsNLjPZPQxnxZG9F/TEcr2cj9sU=; b=BOgcJKdSvCXmK93lFUC7pC+YbQ8cvRSxnyir1hEqsaa7q208uE8mJzg0iIPZN0UYia ej5nSSGVpR9LtUDwjPI5bsT175EHJfazKlxzfx8JKdQkdvSWpRkA+cQUgbs1BCNbOe8a VAVfrQwiMVuC+peLzBO8R3RadZmQBdCaqXdv13FDzhXr7NQ5HqcYDTnzuBM2WE1hAYa9 RWOMYHC1mXPfZCJZ1HXF4G8/8Huf4sn8pq16fXecu5sDQ1QdjxrFZ6uAZ3BM0+eutZgl QeBgBblzmYz+NTUhJw1e/R/6P52805Rwu6tXHEqdAHTtKnuldcDqpPRz/cNJZNRGd2dm ApXg== X-Gm-Message-State: AO0yUKXOQwd8JBJwRaqnKN/5Kx7hN6xqEUZkJLTslN6Jb3piyvnZwIzo 8VTenbKV2eKBC9GIQ1MIF/24h2mKAAI+sHKXugCIeg== X-Google-Smtp-Source: AK7set/kXv07zOZU7pYxD8+0imoIgDvYa7wyC6q6DaDs/59rlPuju1HxyaH4+qurTW60HvGhSi/gpCmFSKrTyxp42VM= X-Received: by 2002:a67:c31e:0:b0:3ed:1e92:a87f with SMTP id r30-20020a67c31e000000b003ed1e92a87fmr1878200vsj.1.1675102876842; Mon, 30 Jan 2023 10:21:16 -0800 (PST) MIME-Version: 1.0 References: <20230130130739.563628-1-arnd@kernel.org> In-Reply-To: From: Alexander Potapenko Date: Mon, 30 Jan 2023 19:20:40 +0100 Message-ID: Subject: Re: [PATCH] mm: extend max struct page size for kmsan To: Matthew Wilcox Cc: Michal Hocko , Arnd Bergmann , Andrew Morton , Alexander Duyck , Arnd Bergmann , David Hildenbrand , "Liam R. Howlett" , John Hubbard , Naoya Horiguchi , Hugh Dickins , Suren Baghdasaryan , Alex Sierra , linux-mm@kvack.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 0FF884000E X-Stat-Signature: hjsropzfoqfyj5mb4onocmbr1o6rpxw5 X-Rspam-User: X-HE-Tag: 1675102877-119834 X-HE-Meta: U2FsdGVkX1+HShOXm21Qcr5I6z9QjDExQpjpG5l7R7ZL4gUwnVa2QaiO1+S3I30cs9DgAAmMUDCRj2s5tkwbT+dnQTfxolrqeqNaV7yZdn47t9SeR+shA1kMs24n/o19A581yKpJE2A7mKwbQEniSTyDGc4FEx1GudOnuYFqZPKpBAPgHQJSn/RXWjaYm0cN/H4Q2ZRlgOK8LFba5FR2+ev+GCcWqH20xRWkeJZ+Cu6Xvh4NwHqvhJjcHG6rHnqUnTZYH1sRDIooPYoeGhoLQZXXwWz7i8Kw9ubE7J9taepzMY0jvmF0PQ8zr5ujJXuWqvCh6z/rwn98pbldGBShDIC7kxNE23ptH66XlIH6kcwiato7nwxkNU4G8/U6W9bdt5oOu845qPQ7brvM95S+YL3JCGMZPamNf8yGlRLjGeHoPmixNYavrH1imQ6Ikt4bShv+xNUKe7/uASK8uweDUDdaGdt1yaleSIwehUTiYxqia0ZI9Lda+U5VuUwooAmNWFQ0P7vugGd9Qxgkrm7kBowjMjdc3Juclbqb/C01UxN/4rAk4XhJy4m2HCffapKyAo1wdj7R53tU72Wm5VE2imjYMRuzJSE9D3Ab/TaGwpxkxPXuq0Tj4oWYV86cTeS04YdQAUvier248SKXpFqd6Gmt9TcyBoiVe7q5OGlHZJaXqo3priemH5132nYmVjSsS5WxPDIIkzmhTRKe8KI7EtWO7Z8p3l2nNZo5EnWQ8K9nsbyTbZKyuG71WyH6/IsMgft5H1z4RDoWmaID+ZiC5kYOZHtkPwdOxP1i4fFqsrE50kFfAcQ3K4T8z0Bl3fuppqmr3jW8QbrXv/wiuw5A1vDIKLUWJnH5zx1PsiowFpvWG4JrQup245aq1ModwOEycBEbr8ywVt7XwebeJfu5STf4gKvmocOxONRXi94dwVcTB5B/kWiPfPesOVFrYqWdHlDZYO1f6bZFu6+Pdz9 tzNsi7Zk /WNASADMdw5TyX0XvCza/bXjnofB0mXzu3xM3I2UVycEopxflsryyAqe1cSCikxE0O1qRvLfcASs5IZHOFWtb+jRYEYxx/348ngCnLlgmc/G9CcspMyWJo9K27wvqENIXEkBa1IBr5LnUnfQWDy45bE7tbWsNkAjKPaZLLa8vG7h+VL/BWoljE7JvC1z7AVTjP7gL34ERov9/3w7QNFh4DxQPLjM22E07nDUhCVZ0WGbtC+2FKx7o4h3wJA== 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: > > I haven't really followed KMSAN development but I would have expected > > that it would, like other debugging tools, add its metadata to page_ext > > rather than page directly. > > Yes, that would have been preferable. Also, I don't understand why we > need an entire page to store whether each "bit" of a page is initialised. > There are no CPUs which have bit-granularity stores; either you initialise > an entire byte or not. So that metadata can shrink from 4096 bytes > to 512. It's not about bit-granularity stores, it's about bits being uninitialized or not. Consider the following struct: struct foo { char a:4; char b:4; } f; - if the user initializes f.a and then tries to use f.b, this is still undefined behavior that KMSAN is able to catch thanks to bit-to-bit shadow, but would not have been able to detect if we only stored one bit per byte. Another example is bit flags or bit masks, where you can set a single bit in an int32, but that wouldn't necessarily mean the rest of that variable is initialized. It's worth mentioning that even if we choose to shrink the shadows from 4096 to 512 bytes, there'd still be four-byte origin IDs, which are allocated for every four bytes of program memory. So a whole page of origins will still be required in addition to those 512 bytes of shadow. (Origins are handy when debugging KMSAN reports, because a single uninit value can be copied or modified multiple times before it is used in a branch or passed to the userspace. Shrinking origins further would render them useless for e.g. 32-bit local variables, which is a quite common use case).