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 36B7BC41535 for ; Wed, 20 Dec 2023 00:54:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A60DC8D0005; Tue, 19 Dec 2023 19:54:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A10DB8D0001; Tue, 19 Dec 2023 19:54:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9005F8D0005; Tue, 19 Dec 2023 19:54:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 810A88D0001 for ; Tue, 19 Dec 2023 19:54:25 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 510A340488 for ; Wed, 20 Dec 2023 00:54:25 +0000 (UTC) X-FDA: 81585375690.25.7432580 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf07.hostedemail.com (Postfix) with ESMTP id 5976B40005 for ; Wed, 20 Dec 2023 00:54:23 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=CEmIKTRQ; spf=none (imf07.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=1703033664; 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=1bQxJynYth0P2KZn9V3arNd1bYy7GM817T+rlhQND8E=; b=H8BpbtmLqgbreraAxG2sVIi5xPhyuz5uKuTN95oSK/rR3u31DJMO4pN8j5pSOG+ega9SCC b2SCdQjNHudyI5xYDT/Y5/oDxclzAfN8boj6TCitwu/LmqJvZxpiWPkYCfI9ynClecMZ9e 0kJJT8vkgrkHiBGyiGoN7497iBo05wk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1703033664; a=rsa-sha256; cv=none; b=nXqiy0I9G4qXm8mkiNXY98LCuRSKgEfv7T/vmJZgbzk1H4C4FOjcozG29UcC4qJYALtzT2 JtnHA+DYK+dxwx/OksDRBgdDmh4fQTWjTeF6HKmHXtL07YHaGlYKsmGOQnHufTJewKuuPa qEBX8OjmEOHOu2c8ZY6EA0IZbYo6LyQ= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=CEmIKTRQ; spf=none (imf07.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=1bQxJynYth0P2KZn9V3arNd1bYy7GM817T+rlhQND8E=; b=CEmIKTRQ9YWyGvs9GiwR7Q09uv ekzcO9unPub3iGKhfcIXPCm+K/jwq9ALXhk78SCe1Dy4T1d+R5GEm2Wx5UgRVtj6WASB/49SqqeGd 6Y3rxIeSA2oSmW9o73TDA2mOYcV3kdsMAwyAc4V8NYIc8x5eCJ4rhjzGJFXJOeNqo0kLKmp/AO22M HHFQqqBwuUmVgMkkNIzx2xlZxkfqb/IRAYQTPfnVU6FIWnlJWU/AYNzUuHIM7QARYZs1xhaM9owQd xhfT8gYzhyBd+croU6vq8Qod1+J9BppOqgRb6I6UA+X1zgK6BPD1TGWkcqbh0NsSU25FmY88gPeYi JyeEilqg==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rFkqn-003WGC-Eo; Wed, 20 Dec 2023 00:54:17 +0000 Date: Wed, 20 Dec 2023 00:54:17 +0000 From: Matthew Wilcox To: Kairui Song Cc: Andrew Morton , linux-mm@kvack.org Subject: Re: [PATCH 13/13] mm: Convert swap_cluster_readahead and swap_vma_readahead to return a folio Message-ID: References: <20231213215842.671461-1-willy@infradead.org> <20231213215842.671461-14-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 5976B40005 X-Rspam-User: X-Stat-Signature: gksce71mzshqn1grfr8y6ykzbd3ehcuw X-Rspamd-Server: rspam03 X-HE-Tag: 1703033663-594492 X-HE-Meta: U2FsdGVkX1+G7q0CCCbI5gH0BUFY8ROBwjERO84sMLWjI8UQxJtVRm7isCV5xAojgpSrAHH2cvLxbNsgt36+oPn2s+2QYid+pQLr5WlPnKgfQiAEf1dd93FPJkPm9xnY7db9OhtP0a8TqybF7fTt/NQUKUHTBnQrVSzkPhF+wAag8WdEKcbyp7wNRBdAPNArsWmZAbZEdYEh2W2rJWg9DNIT5p7cUf92Wn3eQ+FW22OjL04kmVpjYmG2g8SXU/t4uI69m8MgXCjEA0TuMmZNhJG67Lf+cVV5nTP1uOa4YkrD15MiyzECV4dsrAxN6TgniRpHuWmPhq2I8ZvHCAtAvv3/CWtvrWg2heuCgJkPbf8iX2ScBNxzpHJDibt+17+xaJybRS8kL+jPWhNgT1NVYxQZobBiNFZ60kTZtzu82Xev7gJojB/cVrSibwmZzyoEun9AxG+BjBdAbjIqeWj8eqGsYlPilIdPvvHfnmWTIIx/T3fVfxr0ojc/HKqY9Y2BI+Q/A9VDSaaZzIDcOXabx9G9mZKoECiel8TTksvmUmU+JJCmHP/aMAMvOLgkTnE5u3hPBn0VMu0qZsGA5974itVAg++mFv9koWFEjAHBHtT14P+cvY6JZ7QGc77fX3k+e7cvoBI42sscE5Xj5p+WhnVk1AgiZt8V3uL4UbjrrfWnq8n4g3DUsUBQUmwtQhwHzukd83FQznzEmJijAFwb8kgB2nHBNlZdobaqioh9Lip1vGnXNfLHPe0Cs8vTBnJvOo39vB32oGV6ruOs60bxKt7gZ1Ojo655Au8/l9wk69vke4fK8WvVafjybaS1xIxURoQjd4EwzidDJBRPDB4AVLBvHnLGFkC+vKuR1LkzLBUg58PyyirjDN6ciuCZrYMF 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 Sat, Dec 16, 2023 at 09:58:03PM +0800, Kairui Song wrote: > > @@ -888,14 +887,14 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask, > > { > > struct mempolicy *mpol; > > pgoff_t ilx; > > - struct page *page; > > + struct folio *folio; > > > > mpol = get_vma_policy(vmf->vma, vmf->address, 0, &ilx); > > - page = swap_use_vma_readahead() ? > > + folio = swap_use_vma_readahead() ? > > swap_vma_readahead(entry, gfp_mask, mpol, ilx, vmf) : > > swap_cluster_readahead(entry, gfp_mask, mpol, ilx); > > mpol_cond_put(mpol); > > - return page; > > + return folio_file_page(folio, swp_offset(entry)); > > Hi Matthew, > > There is a bug here, folio could be NULL, and cause NULL dereference. Andrew, syzbot has also picked up on this. Please add this -fix patch? diff --git a/mm/swap_state.c b/mm/swap_state.c index 793b5b9e4f96..8a3a8f1ab20a 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -894,6 +894,9 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask, swap_vma_readahead(entry, gfp_mask, mpol, ilx, vmf) : swap_cluster_readahead(entry, gfp_mask, mpol, ilx); mpol_cond_put(mpol); + + if (!folio) + return NULL; return folio_file_page(folio, swp_offset(entry)); }