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 CE920D10F37 for ; Mon, 18 Nov 2024 04:46:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E0B496B00B2; Sun, 17 Nov 2024 23:46:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DBC976B00B3; Sun, 17 Nov 2024 23:46:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C54D76B00B5; Sun, 17 Nov 2024 23:46:51 -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 9C39F6B00B2 for ; Sun, 17 Nov 2024 23:46:51 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0B615AC211 for ; Mon, 18 Nov 2024 04:46:51 +0000 (UTC) X-FDA: 82797979194.22.DF2CD60 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id 4214CA0005 for ; Mon, 18 Nov 2024 04:46:14 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=V3cmpTsc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of kees@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kees@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731905143; a=rsa-sha256; cv=none; b=RNFGal3RAkZK57co7sECC/d58YCmVHaEgB2XXRbzm9xwNrEw9w6MbocSgTHzJnVzRdiB2d 2F22HhbXjvkwIawKPqRj/qzMmWuB1F2TgoMGyl0B528tzHdjW8JLwboTmU02WWEyfZS8nM f70YNfVwRRyOHNc4vgzHvNjZEHvoLes= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=V3cmpTsc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of kees@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kees@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731905143; 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=LKsqnc04CXJbOIRFucIVaej/Uhnk1LR5Bdpg4/tTH88=; b=nSDoTVojn53We8hLIg4DiAUVFL2qlPRzdkObUGfXqo3M9v2eCVp4v2xXuweilPLgmszVUR WRGf/ZcDaa6MxeTkdNir9foo4E0HTWpno18Gux2wk063QqFswa/fvaXidNDnNBcgpaiuNq RzjqF9uahhh99E4AmeWc8a21xrp428k= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 600D35C5719; Mon, 18 Nov 2024 04:46:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 295AFC4CECF; Mon, 18 Nov 2024 04:46:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1731905208; bh=ryCbzJ37q2DIZgbhl/DsiG7UZIoX0K5gGnhDZmLkehM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=V3cmpTscNQjtEzC/wf2JuyG/FwK+poTxqSwC191jC/kKjC7CtMxRmaLictQk7Dcc7 5bSWxPyzfelNA+hMNCZSOEkCR3bAsQkAVLluIb2pJJAIZ22aUkDLL9gHbicOqlejrU Xw3x4GTSz8fWJrQiFZzWd5crCRyibBefOwXA0Yk/N/lHw7emztZ00HUNpP8/W+ghdb TqxvnGj13pkVSAGDA7fLvXZhu5InmlQcGzePjc5ZfisfFqDN5GSZhfNZd2f3cima2s oZbJ9YCtCACWIf2GQSN61UngO4dv9LeWDTwq4Je7A0n9GqzYYMs9WzWk4lFb6GUMBH wxcvut4PqexFg== Date: Sun, 17 Nov 2024 20:46:45 -0800 From: Kees Cook To: Matthew Wilcox Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: Re: [PATCH] mm: Handle compound pages better in __dump_page() Message-ID: <202411172043.C19A3963@keescook> References: <20241117055243.work.907-kees@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: 4214CA0005 X-Rspamd-Server: rspam11 X-Stat-Signature: enzrok6s7c6jfspckpiihw3mkzt944cm X-HE-Tag: 1731905174-897608 X-HE-Meta: U2FsdGVkX1/INaPpozts7QEs1BakBwGcsfctRwA1nwsohhOIZXJzOR2+y3yl/Mkjiy0cmUpxgCTx1sK4hLRisGokH4LjJTqLFAsKUbPYucFavHauj7CEVPtbY2VONRC5YCl12AWBRKxc4UWJuyB1hgH+TYLuzrAZag3tHfdzAAnzY7dcYp6cdqGh/D+h3Ut6tHAFSMcssShdr+nIjGxZMJgdserkLfV6TiG1r1lVgiBlOH/eJcqoZ99oQeH0YhSNXeCuk9kd87CNJCDrLeh8VsE3iLOptWakfubkXqInnUwtwTBLzPiaEGAXkJLxNQr4dcZ4xF+d0MIIb5ozA7KBI0tRtYK1IUWzdPwuMIrTTCGFwel69+Jx1up1vYhqmdeZKfRuAP8ad1wZhrZj+0UtVo1aQqEF6MnEzIg8RfJUPusELtUbTsLdn1ZOMG9jlW5VnFFdSYPgvIG8Ep7IwpydyHQHLjpsciBiQ3BMy/8etBMtDOZ2NCfREvrhzTKvMD+/3KOLSBjwd7PU+qzxnewa/a4npORETwr/2kjYviT/8wP52YtvbDsnEYZvphazxXljeVQWi8gwfW22udoKDlpi4FiTyUmG8dMrzZi5JmFMzIPa/6m8+3367qSm32lAAv0oV5auMwsPxmm3F2sT9Izz6jocP1YdrFiVLVlw8tcfbgWukx/tJCljNpB2Q3qifI3lNVEBYTtsRHrqDmOspwyBK7QqhRNsrKKqf+KxfmCcDtyT7gCAUc8JT4ctKfclHuqTD1VFjP89Ol4q075hJ/o/pMHXVkpHBdrV7IPi2oy1fCAuWfea7nFKsx9jQDcauYx2jEy4FtmWbpxPVLRKwjCkpwIwBMPMcGLLoW3Khxs4zaf/mp81pQ+tcHfKRxDZAq+eD3E45TC+HY2uI8V4WlQP668AV+lgDs21fWsAK9iggPCkRmb7dtoBfL8+M0oitlnDPs1ESSLyvzyOs0wQN5P bId9ovH0 jh652LZ8tEjfWdKaZq37bf2TcZrRcVBTSoqz/+2jSxZSUc1ouDx708nZ7vIvVTtQwpu4GSgtCaG/wY+XAr22WeQOrctOMpiAllqoZ+IAHlbkXWHLPIyiezBabbAgMup0W8ib1qfbPmGyh3Ya2jkwx4IbQeOIE8MqkB/iPbHgaDJ+HTeQMrpBvmK8HI+Y37KqWFpb7ouZMshhCuFbUj0LXkkb/XQXolJ8fMJAkeXTDa8HBUwRAvmuZI01OUCMU1B1xhELQ2liVOAmXzpv+LMfvV95LQkaS1dLdTE7L0AYofdsdb9o= 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: List-Subscribe: List-Unsubscribe: On Mon, Nov 18, 2024 at 04:10:52AM +0000, Matthew Wilcox wrote: > folio_test_large() does not touch page[1]. Look: It does, though. :( It's via the PageTail(), which calls page_is_fake_head(): In function 'page_fixed_fake_head', inlined from 'page_is_fake_head' at ../include/linux/page-flags.h:237:9, inlined from 'PageTail' at ../include/linux/page-flags.h:281:47, inlined from 'const_folio_flags' at ../include/linux/page-flags.h:309:2, inlined from 'folio_test_head' at ../include/linux/page-flags.h:824:9, inlined from 'folio_test_large' at ../include/linux/page-flags.h:845:9, inlined from '__dump_page' at ../mm/debug.c:138:8: ../include/asm-generic/rwonce.h:44:26: error: array subscript 9 is outside array bounds of 'struct p age[1]' [-Werror=array-bounds=] 44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE' 50 | __READ_ONCE(x); \ | ^~~~~~~~~~~ ../include/linux/page-flags.h:221:38: note: in expansion of macro 'READ_ONCE' 221 | unsigned long head = READ_ONCE(page[1].compound_head); | ^~~~~~~~~ ../mm/debug.c: In function '__dump_page': ../mm/debug.c:126:21: note: at offset 72 into object 'precise' of size 64 126 | struct page precise; | ^~~~~~~ > > Instead, explicitly make precise 2 pages. Just open-coding page_folio() > > isn't sufficient to avoid the warning[1]. > > Why not? What goes wrong? I'm trying to get gcc-15 installed here now With your original patch applied, I get the above warning. -- Kees Cook