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 F0C18C00140 for ; Wed, 3 Aug 2022 03:17:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A3196B0071; Tue, 2 Aug 2022 23:17:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 752AA8E0002; Tue, 2 Aug 2022 23:17:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 641558E0001; Tue, 2 Aug 2022 23:17:57 -0400 (EDT) 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 51ED96B0071 for ; Tue, 2 Aug 2022 23:17:57 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 1621A12016E for ; Wed, 3 Aug 2022 03:17:57 +0000 (UTC) X-FDA: 79756822194.30.5D98B88 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf17.hostedemail.com (Postfix) with ESMTP id 555D3400F9 for ; Wed, 3 Aug 2022 03:17:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=5RRVQl4J+7WXKkaGNwelJxyZ6SmgqBWySND67zzTwmQ=; b=WbnMhlm0UwFM0Dewke3HjZ/48z Uyw4PHUlinyN876MkcaaNskBIdOLY5gBEWAgtMEZX4bw08pW2pwYF3N4Gkb/wqWdZWdyU6XxTcN1v 5Jm0I8ugS09D623Lyt6uQGql+5w2Tb9zcYuI8CxpCH0SVHv0Ov8HlEQZlJpg0wXkQG3hs6vJpn+Dn pVli00qM/OOk4O3RE2yjPduiQol2d4DTz7scKAlkcc3bLwICr7I3gx4iI3uuci0l3Pg040ZlqyZiq 1EDgTHuEJOwSiYiMwntBqRRZDcn76Ib8sU34kA5Pa/7jwTadOeXWsvBxMO4D2hLluXDBCdKYGhias JUcoBCGQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1oJ4tK-008vai-QL; Wed, 03 Aug 2022 03:17:50 +0000 Date: Wed, 3 Aug 2022 04:17:50 +0100 From: Matthew Wilcox To: Andrew Morton Cc: Hugh Dickins , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] shmem: Update folio if shmem_replace_page() updates the page Message-ID: References: <20220730042518.1264767-1-willy@infradead.org> <20220802174637.3bd3478d137b52ef3b67c3b3@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220802174637.3bd3478d137b52ef3b67c3b3@linux-foundation.org> ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1659496676; a=rsa-sha256; cv=none; b=jz5NMy/dLNrDQZyGFAtIFuUVsWgFonSxUG3OuJ/veyBqbfrcwq2s+HD2ZUfejooNzIf1Sn FDFSMLB84eypOfPrJwOnvJFId8P38gK/Lz3NsuYHS0fF112uJ9idRFFB5/MnSH1uXkeVk0 6wMM8OKjirsF5pOAinLWQJCMQXsIx0A= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=WbnMhlm0; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1659496676; 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=5RRVQl4J+7WXKkaGNwelJxyZ6SmgqBWySND67zzTwmQ=; b=UKE7azKLCCcDqZXo2SxQBdgzcGmcFvCu6sZHNfj3t24+cPElunRoUyMBAtceGFaLsb9soY v2kM1/xOjxFbkhug3IoewFJEofu1eLn7iYxf9Yp/q7yH8GqPrAIkRO5dZVsNNi5+iFo5Mq QO1w7cg00vHHOCv3b6cgOb3bDJGZWp0= X-Rspam-User: X-Stat-Signature: 7nm7rd4yyg3c7usfnozh3zqiij9i5dap X-Rspamd-Queue-Id: 555D3400F9 Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=WbnMhlm0; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none X-Rspamd-Server: rspam02 X-HE-Tag: 1659496675-841087 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 Tue, Aug 02, 2022 at 05:46:37PM -0700, Andrew Morton wrote: > On Sat, 30 Jul 2022 05:25:18 +0100 "Matthew Wilcox (Oracle)" wrote: > > > If we allocate a new page, we need to make sure that our folio matches > > that new page. This will be solved by changing shmem_replace_page() > > to shmem_replace_folio(), but this is the minimal fix. > > > > ... > > > > --- a/mm/shmem.c > > +++ b/mm/shmem.c > > @@ -1771,6 +1771,7 @@ static int shmem_swapin_folio(struct inode *inode, pgoff_t index, > > > > if (shmem_should_replace_folio(folio, gfp)) { > > error = shmem_replace_page(&page, gfp, info, index); > > + folio = page_folio(page); > > if (error) > > goto failed; > > } > > What are the user-visible runtime effects of the bug? > > Should we backport this into 5.19.X? Definitely should be backported. The next line not visible in this patch context says: error = shmem_add_to_page_cache(folio, mapping, index, swp_to_radix_entry(swap), gfp, charge_mm); so if we do end up in this path, we store the wrong page in the shmem inode's page cache, and I would rather imagine that data corruption ensues.