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 AA144C05027 for ; Tue, 14 Feb 2023 08:54:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 40A8F280001; Tue, 14 Feb 2023 03:54:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B9716B0074; Tue, 14 Feb 2023 03:54:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 28241280001; Tue, 14 Feb 2023 03:54:23 -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 15C216B0073 for ; Tue, 14 Feb 2023 03:54:23 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id DB0684037E for ; Tue, 14 Feb 2023 08:54:22 +0000 (UTC) X-FDA: 80465285964.11.5A0D398 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf11.hostedemail.com (Postfix) with ESMTP id 8B63D40004 for ; Tue, 14 Feb 2023 08:54:19 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=jaCrsMII; spf=pass (imf11.hostedemail.com: domain of gregkh@linuxfoundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676364860; 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=eeh3un3EEW/KjjQi1AqP3nIM+nLeZRQVsPlr2SofdMI=; b=bo1+Th5mgtrkc2t53IKvefuNB9nP1CRuvXNcrYwNbVTPyoLI/MeIn7udT19+si5w0dGSa3 xmFpudfdZQDO1YvQ/T6oGer0iL6DJksV+ESsTkm++y4iYipkF0uvmt5MVBCvdIjVPW/uV4 gbOlTYxjeGmiJ5kuzDFdRyG7EHPVTRE= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=jaCrsMII; spf=pass (imf11.hostedemail.com: domain of gregkh@linuxfoundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676364860; a=rsa-sha256; cv=none; b=79XR0o8am8ydAzqh/cT/ZONaK6FszGQ5QidtxChYhnvQYbKEC6qaeAyIW/g9rLAwB52R+Y OEYIh+5AdxxLMjhblikCfQcSKF4D2nrnypWjCPvO7QK/l9qdifHRmaYtpxyVyZ1GuWv4BR JX5pEKuXU9h83ARgm3cR+6lOb6nzgUk= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id 66603CE1F9B; Tue, 14 Feb 2023 08:54:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86853C433EF; Tue, 14 Feb 2023 08:54:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1676364851; bh=eC80PHI1ooSblGe91IHUzwxVElTDY0sMh4t/9tmkIwA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jaCrsMIIV0pkTizi04A78l7Vc23QZg8siZQ9wqEdEJqT1imU6XoRZl8Me4hQuNN3f Ez8CXWABSHLfW11IdUq+F5CdYpc6uW5WS+ZRPkZEi7oC45rdB+QwbLOhunCCyrz81k I1pQweAPsj7n+g+ZstP6kUMb7zBSKATwQnBafEYI= Date: Tue, 14 Feb 2023 09:54:08 +0100 From: Greg Kroah-Hartman To: David Howells Cc: Jens Axboe , Al Viro , Christoph Hellwig , Matthew Wilcox , Jan Kara , Jeff Layton , David Hildenbrand , Jason Gunthorpe , Logan Gunthorpe , Hillf Danton , linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Daniel Golle , Guenter Roeck , Christoph Hellwig , John Hubbard , Miklos Szeredi , Hugh Dickins , Jan Harkes , Arnd Bergmann , coda@cs.cmu.edu, codalist@coda.cs.cmu.edu, linux-unionfs@vger.kernel.org Subject: Re: [PATCH v3 5/5] shmem, overlayfs, coda, tty, proc, kernfs, random: Fix splice-read Message-ID: References: <20230214083710.2547248-1-dhowells@redhat.com> <20230214083710.2547248-6-dhowells@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230214083710.2547248-6-dhowells@redhat.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8B63D40004 X-Rspam-User: X-Stat-Signature: zmw4q9koptm389nz8je9wg95tga5j73w X-HE-Tag: 1676364859-473273 X-HE-Meta: U2FsdGVkX18rY6KBV2bB3qWmt1+JLb5/BvCiFH2u6wMvjeTNuOxtafjn+WFDJB24Tir9B3Xm81ttxIJsY6gtil1GaN2diR3ECqm0L0QcgTEbpRPJtHHleDktfUTON5oymeH3Rgimi/1MlXhfZcrd5Twxac9TsphLG+CM2aqVgYlJJ766QyuQlVfaqi5XZLWtTq8BNYttxbIFQCLimmuKIS7j5c+a5hllfF4j+lUxgSkwRntQPzUSIGWfzCxhvR4EQtUS45CfFLovdPisPB6BvYNT7ZASs20wfqkrBCMbfEOxeo5/2Quf1BietSiL9pi26/q21x7FyC9p4Z1gznlZhubcNa3YqfogcjbAB9TSChxM2O+pLBHsCCkgi7WVIR3iQPZIhgEL2eppw/YjBkPvDCbWODLk8NZkgJm64aNg6VFG+Q0wF68sDWwJZ/FopvljaxicvrNuuxdlGm/liuks6dMXttPW9ud9pAz1tO4CMpihOXnP3hg16TtE2HeBiWy36v+7p5bH4VT5js3lEGrl417ozNV0qrGZ+wMs1MN7CXhWhR8d0q7t5TGAP4mejs4H1qgvCmIcIpbzT6Qs/60wiUyGWr7PUSKW4n8pku/Xy9+TpAke4ehS+T4kC11Twhoce70QxT1nFiJ/CEcYq7mVssmmrEcdYex5f2PsTRIEYc8VK79IEw8mDhwVbth8s3m1RvuDRo1/Do6CZ82IMsG8C4BxNfT0n/WbG41nRrWuKwWBmC9JoGPW///nDs3hzciw8pRigNGYKEe/W7xb20RoZP7w6YcYc4lu9G4rN+Vi59up5rlNZGtfT00oduAS4Ap9AyQOKYvICkdS0db3heOD//Iz5zZH5ohLzd16EU6EFZ6P5TRwa6uvzx8nk/HDjrv76yj/175TPo586ZU/egYrtanGKn3wGS0o6iR/NUZZAq/NJ5IyDQdPDzXEoag1Zq0xbq96JNR1XLTdw/qORh9 ORUzAxrn 5zkNOsftZ2cifuRYJzQV1GQD3WfIVEouVFSGqc6iDuF4PLLT1pCzz2QSlf3ukJ29WV6E5X+PWkc0FizDupkxk5oIlqegmipFWCho1p7+YQM2fts3J7A+D4saa39e3Xx5aHdqIUWhdIRpMNyLCs+uGwbryuJPHBhhLuujzc6mzX5v1yxSmMoSc2JcF9HAMi8EgyMudn91w12fIEjX+Gl0fJqfP1MwRDrp39xy20ZRkTicGlbACrkmpNluVAbaJVvhlYQ1yB/LDpa1dgFesbOUBEzG3UGq9D6SWTD2/+giZxyAHh+uGUTwTylwNtmpFLLgXcRg/8w30HMqLww9ouQAJ1jPoYloYlsIYvybDEBrieyT/o9hm93G+ApcggaKzB8JUw3WRQDd2VaXoZ+BTpUoh/RXRlNcL8xUJru+Q7JRmScVmRRW2FNOZb4E1cMzoEYAEommSLyeO30wLCPFRb2J9n3eIYswlY57EWr4VvX+EpfPPhe4AKIT8CdcmNYknHsOJpB/moW6MfnobFnGCpRJLLcQ4WJmWvvTJ/LM59yfnG5xHSgnRqaKojaXacvdHAyiPrQYYrX5ryL1+iV8HHjSfN1cMQHj+0V+tHFDAtuT2WAdbadNRfnptOZcZig0He8GReers1uGoxv5o/Y0= 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, Feb 14, 2023 at 08:37:10AM +0000, David Howells wrote: > The new filemap_splice_read() has an implicit expectation via > filemap_get_pages() that ->read_folio() exists if ->readahead() doesn't > fully populate the pagecache of the file it is reading from[1], potentially > leading to a jump to NULL if this doesn't exist. > > A filesystem or driver shouldn't suffer from this if: > > - It doesn't set ->splice_read() > - It implements ->read_folio() > - It implements its own ->splice_read() > > Note that some filesystems set generic_file_splice_read() and > generic_file_read_iter() but don't set ->read_folio(). g_f_read_iter() > will fall back to filemap_read_iter() which looks like it should suffer > from the same issue. > > Certain drivers, can just use direct_splice_read() rather than > generic_file_splice_read() as that creates an output buffer and then just > calls their ->read_iter() function: > > - random & urandom > - tty > - kernfs > - proc > - proc_namespace > > Stacked filesystems just need to pass the operation down a layer: > > - coda > - overlayfs > > And finally, there's shmem (used in tmpfs, ramfs, rootfs). This needs its > own splice-read implementation, based on filemap_splice_read(), but able to > paste in zero_page when there's a page missing. > > Fixes: d9722a475711 ("splice: Do splice read from a buffered file without using ITER_PIPE") > Signed-off-by: David Howells > cc: Daniel Golle > cc: Guenter Roeck > cc: Christoph Hellwig > cc: Jens Axboe > cc: Al Viro > cc: John Hubbard > cc: David Hildenbrand > cc: Matthew Wilcox > cc: Miklos Szeredi > cc: Hugh Dickins > cc: Jan Harkes > cc: Arnd Bergmann > cc: Greg Kroah-Hartman > cc: coda@cs.cmu.edu > cc: codalist@coda.cs.cmu.edu > cc: linux-unionfs@vger.kernel.org > cc: linux-block@vger.kernel.org > cc: linux-fsdevel@vger.kernel.org > cc: linux-mm@kvack.org > Link: https://lore.kernel.org/r/Y+pdHFFTk1TTEBsO@makrotopia.org/ [1] > --- Acked-by: Greg Kroah-Hartman