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 E3ECFC3DA6E for ; Mon, 8 Jan 2024 22:31:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 185F96B006E; Mon, 8 Jan 2024 17:31:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 10EFF6B0071; Mon, 8 Jan 2024 17:31:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ECAA66B0072; Mon, 8 Jan 2024 17:31:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D78A36B006E for ; Mon, 8 Jan 2024 17:31:42 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id A7A2D4031E for ; Mon, 8 Jan 2024 22:31:42 +0000 (UTC) X-FDA: 81657592044.16.B03F16A Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf08.hostedemail.com (Postfix) with ESMTP id CC59316000D for ; Mon, 8 Jan 2024 22:31:39 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="Pidkx/uF"; spf=pass (imf08.hostedemail.com: domain of dhowells@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704753099; a=rsa-sha256; cv=none; b=nLHdEwNOXx9t1WpBUTWHvkyAsske3PS29aZNYzoUsSiZSRYnhtKYwAVmXZLTubq7MFdYt2 xhTP+yoySJBMfnK6WlCLNERBVkeQcUbPidqiedyQH5weId1nJ+jeXsCHH3MCeoLu6ypPSt wvAqfP5I9yO4X2BZLdlFsdMhQaOVJgE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="Pidkx/uF"; spf=pass (imf08.hostedemail.com: domain of dhowells@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704753099; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=g3fhJdYhF0Jh8djZ9CbUM5+BZiYxRI9hKlm7wmHneNE=; b=gduZcRnppVjmmMf5bGDidbtFf4lzN/ldttHTrXVyjYcx3/ax6OhXPTx7vxH2NIA7fWnhN8 fw0zjfSAYHOP/WPfI2yY884XHCPAllRA8OHnXOcCKM/Aptt1ho+wCEuV2rD5zvD6CaxVKN LNdWFw4ZpQTqVlDgsJUl2ZuC+mmoT8A= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1704753099; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g3fhJdYhF0Jh8djZ9CbUM5+BZiYxRI9hKlm7wmHneNE=; b=Pidkx/uFfD924ewqzOQINyXD4Ez0mPNUOTZ+QQlmhqASIQZCHr0NjN1RKvj+2CCVaAb9vG 7E4yT3oJpViWCDFAWxiz8xdYmG9rPOPUdU+8B7kdE5L0LLSpWsaU8xzDQAopiedB533r/2 DGr3BUxKMymv/FIWQbJ84ye7UQTiheE= 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-124-mFt6nnssNiyKD7dLtjUHgg-1; Mon, 08 Jan 2024 17:31:35 -0500 X-MC-Unique: mFt6nnssNiyKD7dLtjUHgg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (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 4CFBE1C29EAA; Mon, 8 Jan 2024 22:31:34 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.42.28.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id BECCF1121306; Mon, 8 Jan 2024 22:31:30 +0000 (UTC) Organization: Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 From: David Howells In-Reply-To: <20240107160916.GA129355@kernel.org> References: <20240107160916.GA129355@kernel.org> <20240103145935.384404-1-dhowells@redhat.com> <20240103145935.384404-2-dhowells@redhat.com> To: Simon Horman Cc: dhowells@redhat.com, Christian Brauner , Jeff Layton , Gao Xiang , Dominique Martinet , Steve French , Matthew Wilcox , Marc Dionne , Paulo Alcantara , Shyam Prasad N , Tom Talpey , Eric Van Hensbergen , Ilya Dryomov , linux-cachefs@redhat.com, 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, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Yiqun Leng , Jia Zhu Subject: Re: [PATCH 1/5] cachefiles: Fix __cachefiles_prepare_write() MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1544729.1704753090.1@warthog.procyon.org.uk> Content-Transfer-Encoding: quoted-printable Date: Mon, 08 Jan 2024 22:31:30 +0000 Message-ID: <1544730.1704753090@warthog.procyon.org.uk> X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CC59316000D X-Stat-Signature: 4y3bafdwosffoarcgk3e5m4db16txd9a X-Rspam-User: X-HE-Tag: 1704753099-873136 X-HE-Meta: U2FsdGVkX18fLbtHHOJnWD9wl0ioGO5sjyXoU+HPlKZ5yFJbaQENtgkUKkwhj/8j+41KxguV/ECHk9sohsnVqH+hBolXFogEBlevunGdDQ/VkIRQLCvpoGWwLK0L/o9QElaGZRzNG0zlqm5S0CA1y0nGmtCDpioimZ0nQ876cYbTrT5S5dTfE8zKZJZYQ3+a58MxDDyWVmZhMm8cc5qGA3m4qORlT6sAxzetoyfYgP+NIiH3EHR3XboaCNbzQAo7TQMP7ubK5JKh7+4+JXFGcM4SUdN0Cj7Z5r17d21ubq24owHODhXExg01jxvNkmSZ1izqQavsBok49Csj+U8bjO2j8Dr4EtPVrwaOq/E4dAjc5m6aWdzQm/gCYN/jxTHzMXLAJAsxmySl/71/xQsdOYg6fEafx7dlT7x33DxV+4UJhrtOgEp5mfVXGYuGvUeo3ITyEiAyYQbQz85elCzIAH7J5fQqVMB4DJJISC+DX7NCZ1fo52mfyS0ztX92hIlBJCCY8H/RKWZ3XAIgN+dptM7dahfLPpkckwe2unaf0cy4VlGlCyKOWKUb0o3Y3Kp1wuH+atsEcDDc696pbydS7W0Q3XarevaIWNQw1dvUsO0go5ynI7BlZb3dXnRSK2FNApynt3BGul3mTAtqGXgNMN+Os/H14sZ5CQZDDh85EWGaywSg0Y/RVGAT375ILPTPdcQPJMzwQXT3s0VNQ6hBVCDkOxr42NdVDgGnxqQ+72FeMFRhCJ7rTEmntR+QeieL1D9ELwVStqVW1yZK6WFf+QHbuk2icsDPHbxIJmvdb0yTIIt2heGZ6kjRAuxEVsqMGE3L5Glzp1OELNBtbaq811OopeQVafGe2vj9zdx1uWYqqFd312jOlTYf7xKZfQYqOqofiUO1BIMouTvVLd5npqa3HxwwvYtWibYqVD3OhmsV1s8tJf1ly5FOE/fv+s6FC69qDMQ6d+MjDKIqzuu d9IV/XJH eG+un9hzRHfkueob6UOO0gBCHtKtVDgR4cKJpHsc/PaR71/tTBAyAH+gDz9NKz5i9kWotCZ9IOv/d2qko68SmB03FHABesDt9B3T5PU5hVqXAAR7reNl8AMuMhG9J4VJlrsixGI5x/bFkfr3Radkdknr1RBN6oaLkhOjyTx7ZvMRMo6B2jUHurs56lrjf30uB6w09EHU/CT30vR0kZVvUk4zF7O42UdVOMo5PDMU8HCY3x2HitJGecjFwbFVGPxYBCnwgzr+bmXHAaPq61ZvLVBnmZ7rlQqrHPxkUcKmld9NvPKILWab1aEoh3tM5M3dk6lqAJKKPC9uhQDf/gWU1+8OSWIiLrTTjn8ZFU+pUW+4zFdJrWm15DE7ANr8cDoLKiz6JmXXpamOMVedD7+jiYme0nUMQxtwN+JSYBxBsORu2sHQmWjxEatpkmJOTaTcpj5w7OmKDJT6PBkwQCy99SxcynLryjVkOAgpcvSL9a8b8Roc2/jpfpX+2J5BBUA33GEZE 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: Simon Horman wrote: > I realise these patches have been accepted, but I have a minor nit: > pos is now unsigned, and so cannot be less than zero. Good point. How about the attached patch. Whilst I would prefer to use unsigned long long to avoid the casts, it might = David --- cachefiles: Fix signed/unsigned mixup In __cachefiles_prepare_write(), the start and pos variables were made unsigned 64-bit so that the casts in the checking could be got rid of - which should be fine since absolute file offsets can't be negative, except that an error code may be obtained from vfs_llseek(), which *would* be negative. This breaks the error check. Fix this for now by reverting pos and start to be signed and putting back the casts. Unfortunately, the error value checks cannot be replaced with IS_ERR_VALUE() as long might be 32-bits. Fixes: 7097c96411d2 ("cachefiles: Fix __cachefiles_prepare_write()") Reported-by: Simon Horman Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202401071152.DbKqMQMu-lkp@in= tel.com/ Signed-off-by: David Howells cc: Gao Xiang cc: Yiqun Leng cc: Jia Zhu cc: Jeff Layton cc: linux-cachefs@redhat.com cc: linux-erofs@lists.ozlabs.org cc: linux-fsdevel@vger.kernel.org cc: linux-mm@kvack.org --- fs/cachefiles/io.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/cachefiles/io.c b/fs/cachefiles/io.c index 3eec26967437..9a2cb2868e90 100644 --- a/fs/cachefiles/io.c +++ b/fs/cachefiles/io.c @@ -522,7 +522,7 @@ int __cachefiles_prepare_write(struct cachefiles_objec= t *object, bool no_space_allocated_yet) { struct cachefiles_cache *cache =3D object->volume->cache; - unsigned long long start =3D *_start, pos; + loff_t start =3D *_start, pos; size_t len =3D *_len; int ret; = @@ -556,7 +556,7 @@ int __cachefiles_prepare_write(struct cachefiles_objec= t *object, cachefiles_trace_seek_error); return pos; } - if (pos >=3D start + *_len) + if ((u64)pos >=3D (u64)start + *_len) goto check_space; /* Unallocated region */ = /* We have a block that's at least partially filled - if we're low on @@ -575,7 +575,7 @@ int __cachefiles_prepare_write(struct cachefiles_objec= t *object, cachefiles_trace_seek_error); return pos; } - if (pos >=3D start + *_len) + if ((u64)pos >=3D (u64)start + *_len) return 0; /* Fully allocated */ = /* Partially allocated, but insufficient space: cull. */