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 48928C47422 for ; Mon, 29 Jan 2024 09:11:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C935F6B0087; Mon, 29 Jan 2024 04:11:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C43716B0089; Mon, 29 Jan 2024 04:11:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ABD516B008A; Mon, 29 Jan 2024 04:11:34 -0500 (EST) 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 955736B0087 for ; Mon, 29 Jan 2024 04:11:34 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 709611C12B4 for ; Mon, 29 Jan 2024 09:11:34 +0000 (UTC) X-FDA: 81731780508.26.432A6F6 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf24.hostedemail.com (Postfix) with ESMTP id C6D53180011 for ; Mon, 29 Jan 2024 09:11:30 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=HZ6pE+Rt; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=h09jdlhK; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=BC2+x4sm; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=YZlwMf79; dmarc=none; spf=pass (imf24.hostedemail.com: domain of jack@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=jack@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706519491; 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=A8GvLPqduJNitmI5aRLyKcNYHGU+7vaJTqPL4qbrFKw=; b=w74Wp96ceVLWxL8X2CbnPl1OhMjgmi2GBODPJLJtBHbFTMAjVrGPo/UUbHYItm87Tawqp0 SSlWgM6etPY5sTZHNAakGmgkfD3jVMo9DW7jepkT1z0eCuayv4xc71RZCdBqfopzPfvwsY c8344buTsL90QPBcpmEwHang9vvIy3w= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=HZ6pE+Rt; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=h09jdlhK; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=BC2+x4sm; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=YZlwMf79; dmarc=none; spf=pass (imf24.hostedemail.com: domain of jack@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=jack@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706519491; a=rsa-sha256; cv=none; b=FuX6F3ub5rDGqO7ZPcIcGqFNS0ylLcDF33kgNikNIbBFOMcnLZAwgWW96lrDMEWXhdQtN9 47GLfQEIkq3CaMxIiIYKavoiWuf5pPqUryQgebf1re+1T+71Q2dy7b2JXM15fo2gOJZXvR V9yer20dhDDzIfUDejv+stgvvEmgBII= Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B8E5D222B3; Mon, 29 Jan 2024 09:11:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1706519486; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=A8GvLPqduJNitmI5aRLyKcNYHGU+7vaJTqPL4qbrFKw=; b=HZ6pE+RteqaZgQZg1veKrD0/wQGt8n5hwiJVscdTGrfs/isLk06BSRTYKv3pYNjUQd697j tv4t7QfDZceBEWvzhfqLFIfqk31dIYYCmS6MdHVkh2sy70qTZQUBLhA9jj8V62zPzpsTip ofzdSAO1N3hpnW3h0ZKJjzESyT0fK7c= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1706519486; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=A8GvLPqduJNitmI5aRLyKcNYHGU+7vaJTqPL4qbrFKw=; b=h09jdlhKn6aA99PiGp1XOL096Rn2AVbgoIKPjACmWHBjOhG/dqMAfEFJ16eVTf8TdxxhDa aMc+cFk5RRbyWXDg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1706519484; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=A8GvLPqduJNitmI5aRLyKcNYHGU+7vaJTqPL4qbrFKw=; b=BC2+x4smJMaL3TEBpzZrqnRysAAMkY7buB7eJGoMXdZYfroUpXLpMauysBqbaHhGAfMyop fBfqkiCrPPxsIyBt5kmotUkBwDHHIAmPePesrCvvKlmzkM5iox0RMAppZP6d8ElG+WnK/4 8GnU77korjeWVLP0GdGCYequu40Zw0o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1706519484; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=A8GvLPqduJNitmI5aRLyKcNYHGU+7vaJTqPL4qbrFKw=; b=YZlwMf79pBmijH0L3mj2uH5SRu4Q61fZIS2sdwcsNnOypSGJqHkFe2/nApxOSPTYFTD6sn B/p3EoRaK6/xGyBA== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id A960D13911; Mon, 29 Jan 2024 09:11:24 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id s9dOKbxrt2WUPwAAn2gu4w (envelope-from ); Mon, 29 Jan 2024 09:11:24 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 57483A0807; Mon, 29 Jan 2024 10:11:24 +0100 (CET) Date: Mon, 29 Jan 2024 10:11:24 +0100 From: Jan Kara To: Matthew Wilcox Cc: Roman Smirnov , stable@vger.kernel.org, Greg Kroah-Hartman , Andrew Morton , Alexey Khoroshilov , Sergey Shtylyov , Karina Yankevich , lvc-project@linuxtesting.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-ext4@vger.kernel.org, Theodore Ts'o , Andreas Dilger , Jan Kara Subject: Re: [PATCH 5.10/5.15 v2 0/1 RFC] mm/truncate: fix WARNING in ext4_set_page_dirty() Message-ID: <20240129091124.vbyohvklcfkrpbyp@quack3> References: <20240125130947.600632-1-r.smirnov@omp.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: C6D53180011 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: wyh8zunqix6658jr9zautucffwam49pg X-HE-Tag: 1706519490-817918 X-HE-Meta: U2FsdGVkX1+p4SCzKouEtSV2FuP6JvfrgCl0q1GwCh52RzqnhAjJNWmW95CQ87nLyTxJ1jqUVrStN8y6fl32UrZ8nrkUmq7hwMa63C/4wnLWzelD0ks5IkUiqBzBQQgzZeSxYWPtHr2esC3OTPcol63femTwe+1gx0Z1ADq8iY1e9f9bWyqKV++znD3BV9S8p8YP1eiDIqL1JEc0lVeET61QzF8flsnRD+pXFCay/ry7w2fgnmHsJ5QNcdhNd/sPs4vAidyHq2yy1OBo2YNE7qR3H+QJ+MEiU57two2WJq6pQEf6VGVgdHaPcYE7D5YmsHc0xQCrcuV0cPcLNKcal12tFB7mbPpEDREiPgIGzPOMsLRQFCnTtKsjKdO1xRzRgZl1v87SY22FMOLge+NwNNO4dagXxefEcuOgbBQsv1zGayrcfdX9VxYS30muqC5PsvXKR4WkA6UF1qK4DXnrCCgn3VrbOWiBT4yqUMXzOVYAX9ORC/q2wLh9Ru3KnMzN2uS7UYaISR9U/ZLXv4PLh7PHz4a/d4gCEbIkp0SYenC1eMtAbVmNyz1TuEGBDqTZD4NEItrS7u2OWRokcbXvEL2dPYHHCx5AwXwpY1x1K4MGJWwNqprJ9LA3tdfZc1aSDENHGgcwmunBB/OITq3KMbRg2f+UfQ/WTgY3aeB9n920RMHdhDKX+lxgJb+DUGU/C4nixUsKpdZCqjx7USrnVNYmlU6RIiV0T53FR6HKfktSFBlyUTWpQURWGxQdR67FuR/6OgnJ8WjZrerGX7cFmESgAgezztHh7TlRL4/Q3R5pWUYgCriS9oJrlyxheMN3EFmjeAMI83n0sm64M8mkvRDzyWTNLLew12LNtQLArU7uWf4LXKv94AbMzhM01jKdqNUU/QVJsV0SrTpTaDnjZvPPyr1Dt0PNjPH8aQDnbqXPPG3srD19PssrzqwhY2m/apVP3LFwDsIEORUgfc5 SupjNd3n YsXf9KA0iYhyCNV1TAJ8wbAVUUEp9VmR7lJgtG6ERjM/0HSs1XEcGXSl92ByKkgBBSiahWv7sWtA7kf42GaVGWviQaGWlw5A3RqOyOG/H9kTHpWOdLUlQAQzW1JUldZNJbx7jFI6pja6+PfuThKHdSj0qWt1qNbdvamskJe0bHq7il/X7F/c4UCnLBUQllSoUvtafqi6NLwrvJXSZcIOe5/9AfCV+1uKLiE5khAObxK90i39OonARKGuC6s5BDOnQZmGdWM+JAxZyanzK7SDfZLeDiB2NPdjq4QEyvv/aHIoHkAUwJiKBJw4edRZCtwuGEOAI2yeE3DcHmUDZuHaGn4eeTzNb+zbQrpzBN011DOKaPnYgQE4a0IlbBVODFYVvjudRL++OYvmTVjlI4PGF5cKhpcS/Z6OROS0KBuXXbanrSNQ+uGX9PKdFi9ddT/QFTWu+ 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 Thu 25-01-24 14:06:58, Matthew Wilcox wrote: > On Thu, Jan 25, 2024 at 01:09:46PM +0000, Roman Smirnov wrote: > > Syzkaller reports warning in ext4_set_page_dirty() in 5.10 and 5.15 > > stable releases. It happens because invalidate_inode_page() frees pages > > that are needed for the system. To fix this we need to add additional > > checks to the function. page_mapped() checks if a page exists in the > > page tables, but this is not enough. The page can be used in other places: > > https://elixir.bootlin.com/linux/v6.8-rc1/source/include/linux/page_ref.h#L71 > > > > Kernel outputs an error line related to direct I/O: > > https://syzkaller.appspot.com/text?tag=CrashLog&x=14ab52dac80000 > > OK, this is making a lot more sense. > > The invalidate_inode_page() path (after the page_mapped check) calls > try_to_release_page() which strips the buffers from the page. > __remove_mapping() tries to freeze the page and presuambly fails. Yep, likely. > ext4 is checking there are still buffer heads attached to the page. > I'm not sure why it's doing that; it's legitimate to strip the > bufferheads from a page and then reattach them later (if they're > attached to a dirty page, they are created dirty). Well, we really need to track dirtiness on per fs-block basis in ext4 (which makes a difference when blocksize < page size). For example for delayed block allocation we reserve exactly as many blocks as we need (which need not be all the blocks in the page e.g. when writing just one block in the middle of a large hole). So when all buffers would be marked as dirty we would overrun our reservation. Hence at the moment of dirtying we really need buffers to be attached to the page and stay there until the page is written back. Honza -- Jan Kara SUSE Labs, CR