From patchwork Mon Jan 29 09:49:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Howells X-Patchwork-Id: 13535331 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 355D6C47DA9 for ; Mon, 29 Jan 2024 09:49:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5C9926B008C; Mon, 29 Jan 2024 04:49:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5A0B76B0092; Mon, 29 Jan 2024 04:49:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 41AFE6B0093; Mon, 29 Jan 2024 04:49:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 318996B008C for ; Mon, 29 Jan 2024 04:49:41 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DD533A1E45 for ; Mon, 29 Jan 2024 09:49:40 +0000 (UTC) X-FDA: 81731876520.06.1F700AE Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf06.hostedemail.com (Postfix) with ESMTP id 444C218001D for ; Mon, 29 Jan 2024 09:49:38 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=McVfDfDi; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf06.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706521778; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=pRcl53v/D7LNYmHWLVDHFLzWMRLsRvElPDySPluG9Xk=; b=uuVQBlFQwcbWxn75ifdi+rJtdq93J3ulXG3jTbklmqsv6ZnizNxakih81Pby2G5ztJUfEv RXWduN9eNqcOjUs3+JJJFqlHpWg4gACYOaPV52KIScWASoO16Z2DUHnFQTPSiEb5t4S/zO q/bv/UdK2BzrH2dmHTqYjSTUuoUqghs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=McVfDfDi; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf06.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706521778; a=rsa-sha256; cv=none; b=kjS1JfBvdlrVW9cHvNyqc7GPa3wIDPRfASLZx6hg0EuK9K0tfA56OGG1Jvp+haqfC9HEyT PLmPlqHBIbMXb1FqqOWqLpBGqQpgPp0AoZe09Mfc9d9z8BBeMdD/feUeyOpbUYKWBzkjJa 1uIZMUHIKWm0AWj6YBI5Sf+OxgEAbgw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1706521777; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pRcl53v/D7LNYmHWLVDHFLzWMRLsRvElPDySPluG9Xk=; b=McVfDfDiMQbu66zFjzgLVVcGmgPtragwa3FzkDmp9JAZKsO8Pyu/fxuggEVE+tzGBh2djQ 0uChcaXWu3UwgMub3FJCg7CIvdqhxBlEdpWbZ4tuLuF+Udk28EMnyiV8nz/V7gwAOYRkux YEkBMd5+XM5mzsDIGMawqQZt/EGFza8= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-2MqNdY6VNp-CfaPkR9IzXg-1; Mon, 29 Jan 2024 04:49:32 -0500 X-MC-Unique: 2MqNdY6VNp-CfaPkR9IzXg-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C0F563C2B606; Mon, 29 Jan 2024 09:49:31 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.245]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4EF73492BC7; Mon, 29 Jan 2024 09:49:29 +0000 (UTC) From: David Howells To: Christian Brauner Cc: David Howells , Eric Van Hensbergen , Dominique Martinet , Jeff Layton , Matthew Wilcox , netfs@lists.linux.dev, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-erofs@lists.ozlabs.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Marc Dionne Subject: [PATCH 1/2] netfs: Fix i_dio_count leak on DIO read past i_size Date: Mon, 29 Jan 2024 09:49:18 +0000 Message-ID: <20240129094924.1221977-2-dhowells@redhat.com> In-Reply-To: <20240129094924.1221977-1-dhowells@redhat.com> References: <20240129094924.1221977-1-dhowells@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.9 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 444C218001D X-Stat-Signature: gkoe9s9k8qmqnoo4nzfuhhuhtkgz1q8f X-HE-Tag: 1706521778-951103 X-HE-Meta: U2FsdGVkX19qd/u9SIKxffbHoP5SVknuwn3tiw+EWSK+NsXvyjZe8Wyti5PCCQKxI6Y8V4v9KQiov0PR9I/DoXQeJy9LCLOUqes33CogQ4etbD591Sq/EBu5n1P0SmIEz9/WmfhPqL7iOkARg/8Hm/p/KseWiOXnVKWxMcC1YGM9LWJErEufJlL21d62pyAbOUA9Bo2o3Xfw8qVtPLmiG4ctQXgjENY2RKInQKIyn9QXhyvM1zxJRfptR0g2m1J5JivbvyyRIKRQ69kTEwj/Fb1O7v/jb+fEg5VfkPFxfRgh7bUmLhWRDivLLkLSS7GHnfpttcIoxDL0pZmk9hrYHHTndYwd2prwmA30MVNCbkrHlh69I3DqRrq7VGb26fSe+UKYQPJfHipuObWC783UGHrI0n+muWXqP2D+5DCkRIF7xMB5jPa8AG056IMX2CGnyTsayKxBYJaNFcu1IBP+qLf4108GSc/QPOvI3IbniGG16yK8rhh0wYRVUc5BjMxA/EKOc6JIKPRKxPE1y7sVgwWdlhYbaSCgLi8EDdv79Z0WkHnZFVvxE9a/ZUj5vqk0g1h65IVF2MsxvaJzho9NQHwf3qInW33WoUXVkDQz5xYYPNay0U/EbbKBu9aJkkHARpsvKmoLkstZEvK0Lb9G8yvyWC5v2MpESXx8Hw3ZXLnihNi6O+Po07025KOnRkfx7JmJ4TcOMfwFYnAfLB2Xvx9xuQQkFJuCQUeBCvFucyKKrCdiDDOvUJ9BiGGK9fl2l8MSx9xtyq1qjzyGoGcQr5wFkNIQmRM0vlY9mY3SUPj1kkfEB7wSqX2BfclSwZkizgzA9pT3aoQ8i0gMK5ua33JchU+AA1G4LlKoWwDUgpQEJj5mNjEfr43Aj0GqkBnPvzd/nzpi0EmJsTIj2HBYHCck2nUVL9Z9gL4PBdkUWNa5rrZVPJw5QfoDMIcFZG7XoekxqLvQ5R+l5kgcs5n KhduGmKw Ao9OZeH4MkzIYVj/jsTfizFZY1vD0fdhM3/NA62WEYfEjEDGoWevY1B+MMKayo/9ka+GlG5BjHSC3+nFxtCVA1XQRRLNCcFzJfMVTwRy9n9rMbHd6Vcw16Wn4nVSGzBtSPYqfnVej6XqKE7dzJWdLnvKnx9dgHUJtWN5zjG433GFw4uM+dRc8NTLxtexv1Wk8FUVNOEF5ioOMJv7IfCi38Jihl9pyHd6+ch+47VkKNdXp1Pm2pV+vzxXXReKE/ch8ZqCkIxsuWwv2VkNXIeyEKTKUlHjSDWE4GYVRqMqiGqA6D8qoyzLKDVmXHAcmiUwLROd8BGX0kl/3LPelVKl16cA3unGIiBRnOeeTTM2SgDvkW43YEvU34rwjGSI14ND9KoN7inkdd3WMifE= 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: From: Marc Dionne If netfs_begin_read gets a NETFS_DIO_READ request that begins past i_size, it won't perform any i/o and just return 0. This will leak an increment to i_dio_count that is done at the top of the function. This can cause subsequent buffered read requests to block indefinitely, waiting for a non existing dio operation to complete. Add a inode_dio_end() for the NETFS_DIO_READ case, before returning. Signed-off-by: Marc Dionne Signed-off-by: David Howells cc: Jeff Layton cc: linux-afs@lists.infradead.org cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org Reviewed-by: Jeff Layton --- fs/netfs/io.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/netfs/io.c b/fs/netfs/io.c index e8ff1e61ce79..4261ad6c55b6 100644 --- a/fs/netfs/io.c +++ b/fs/netfs/io.c @@ -748,6 +748,8 @@ int netfs_begin_read(struct netfs_io_request *rreq, bool sync) if (!rreq->submitted) { netfs_put_request(rreq, false, netfs_rreq_trace_put_no_submit); + if (rreq->origin == NETFS_DIO_READ) + inode_dio_end(rreq->inode); ret = 0; goto out; }