From patchwork Tue Jan 9 11:20:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Howells X-Patchwork-Id: 13514778 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 7699EC47077 for ; Tue, 9 Jan 2024 11:21:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B7BCB6B0087; Tue, 9 Jan 2024 06:21:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AF0FC6B008A; Tue, 9 Jan 2024 06:21:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8319D6B0088; Tue, 9 Jan 2024 06:21:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 650C16B0087 for ; Tue, 9 Jan 2024 06:21:10 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 36EAFA1D46 for ; Tue, 9 Jan 2024 11:21:10 +0000 (UTC) X-FDA: 81659531100.13.EF3E9D9 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf04.hostedemail.com (Postfix) with ESMTP id 69AC84001A for ; Tue, 9 Jan 2024 11:21:08 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aenuw9aH; spf=pass (imf04.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.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=1704799268; a=rsa-sha256; cv=none; b=gpESshsUih65Wkt6CfZwt88Km/RFmhUO3nXlsRzBndl6EmbxJ2YDvVNBf5F7Wo30N8RQvX cqBN+bcjuTG2fhNbq8u3cQ4lLoQpgqvHSyo+30dA2SABay591sVPQ2KVpi7ZAKcBFXZbgt LjijOQOcRkxr34xlBO5nXZlH8vMdQjo= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aenuw9aH; spf=pass (imf04.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.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=1704799268; 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=Z0xNWJpdRPanEuZiAQenKRA87zeZrifRwyW7XU8kxYA=; b=8kzfORCV/I0ciRh8KGOHBR4TlyAK10wEtuxosaTV2Wvy3n28QQNPmC9pdOSxFkjCClQ626 oDIKwIJnrO0bXIOaxVV+us0YdFu7GdtuljcUJsnKn//vnbrm36nMoo5MWrgAkjJOzqvY5G cWXr0L8AH2dT9MvWzuxA1Run75RYnRc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1704799267; 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=Z0xNWJpdRPanEuZiAQenKRA87zeZrifRwyW7XU8kxYA=; b=aenuw9aHRQL27VHKd8TZIUSzbuPzLvSAP9TxWUqXC8oonOoFJfjVmemuzi47tyWRK+FHh4 Aez8xm0OjtWMefvNnRfEsTLtKLFWIXCz6hEHPNVAX8dwZgsfpW6XKfYiCuzF9zalX3UEen nJV7R85qms2x4mFwd1ttema+GEAaoh4= 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-EPXp23K5MHONs8COTGeLaw-1; Tue, 09 Jan 2024 06:20:58 -0500 X-MC-Unique: EPXp23K5MHONs8COTGeLaw-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 357C31C06505; Tue, 9 Jan 2024 11:20:57 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.67]) by smtp.corp.redhat.com (Postfix) with ESMTP id C71151121306; Tue, 9 Jan 2024 11:20:53 +0000 (UTC) From: David Howells To: Christian Brauner , Jeff Layton , Gao Xiang , Dominique Martinet Cc: David Howells , 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, Simon Horman , kernel test robot , Yiqun Leng , Jia Zhu Subject: [PATCH 5/6] cachefiles: Fix signed/unsigned mixup Date: Tue, 9 Jan 2024 11:20:22 +0000 Message-ID: <20240109112029.1572463-6-dhowells@redhat.com> In-Reply-To: <20240109112029.1572463-1-dhowells@redhat.com> References: <20240109112029.1572463-1-dhowells@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 69AC84001A X-Stat-Signature: 3k5ri7sxsg6peghfhacytrour1bctk78 X-Rspam-User: X-HE-Tag: 1704799268-756376 X-HE-Meta: U2FsdGVkX1/KlHJKHbOexkNYddTCFuZ5vZQWYQ0WTPs+4iEDITFLydx5ryemuJpu8iQV+DlbHGlu5mF/5aZrAFtVHGMl8TBC1u/mODxHuiBPuFizArPbWnOwziR6SQrntlWLtwMGI99Q0zbhIg9jpkpB0tlWMVPO8SJYwLt4Mb45FUBzFYryYZ+cVq/+XXqykgbIW23K7G0P+LAuNUr9ziaV0vc1w8eSTEjgU5BWiHDmE2NUJUOtJIsMSS3FS7k9xEYCxUy9tCavLs1r+DQt/5Mv9EX1dcPqwQBnfPWBpNZegWFvlsvUOGvYxW8gH6FlSu6Qa8aDEkyunMM+N+Fbom9lzjUsoCNNLh/OBhmPW7KrKOT9eajg+9b3pOeGIdBX9Ic9IBywTiImDPN2C4SejntGqUSdA/HzbeCdQmTh5KEvpICDAt0g4ts36DLX9H34IIhreGH0xAQOSBiOlJIdcqL4vn2sThYqG5cIzBfGuWleVlzIngi2Qn8bcO8I52CBuztnk8IYJtyH5J4XOnCUZfgHuvwEioWmzrGZF3vwojePOZNIihThoKBNy/ZKnK5zdoJhYm+WP1wVbvOQ0wTH6jr93uFWiGuL1uwWPsKfcQS2jLs59d5EI4Hn90kvpZHRVV8HkqE565IqriBs1/UgRE3v4OSRn/0InJq6u2DcNkBHWqcK7/lRo3w09RxvqWaFHO+8aES/84WybV8HAeyWkSxjCA5NlpPrtfNfXTfiQ8fP6GGkJHD8Xqd4YYw8UWlobif3TNTrV/xKA9YNR7vi8QuZ81C/XhJEeWTSm+mU1uLj6J/5MbIkRbgN0KHY6G1zDwAbvW9Uqq2XqcVCGKHAJ488RGJafKrqDI9kHHC+fCDHX5DsrVopS6wlnLDTKLkLBr8KFUBif50aefFeIHCHnqpkqnwEDIGEtJY2Bb8ZU9dghXZnFBUczK1jaema5+m9/oZl3c3IXmUImuGkW/I PGQZmRUO fxLzUCu/WQE5klRqQZrJpdWY+eUnvRzkgSph7HL/M27RM0Jl2pUTqXJbd/txJUts1wmLviDSVdLpSuRbEcAmBLOuJjkepvennX+ZUxnEqO4U6GjY7YghskLGjUbuE27ahbiQPfjLfmJvTI40wIZw3A8VPOaz/CpXnHh5bAJzQSko/yVgbdYkiHiaseNdRIK0w1RAOy3Ev7o7vAfweNvaadtT2kuanXNAC49YN6pEWcpeJ5TVfD/UCd1ooYTscwCbTNHUatcazCLdG9pNLjhxIWpklFkTZ89liyJdwSYRWEXAvmoV6DbytywJ2cTrAwPIwuSRMkjUu8KGh1pDufb5Ketgu06B8c6vpk3pCynsxkO6AndfMmQ3D9Nfzp0jDQ2fRKQWnX7ldcjJfGKipTyjf+2g+hsGBsmiZrts3JBvgVq4+BWii8xnKOf0WbvnquS7kow0BSzfRcHFi9R8= 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: 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@intel.com/ Signed-off-by: David Howells Reviewed-by: Simon Horman 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 Reviewed-by: Gao Xiang Tested-by: Jia Zhu --- 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_object *object, bool no_space_allocated_yet) { struct cachefiles_cache *cache = object->volume->cache; - unsigned long long start = *_start, pos; + loff_t start = *_start, pos; size_t len = *_len; int ret; @@ -556,7 +556,7 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, cachefiles_trace_seek_error); return pos; } - if (pos >= start + *_len) + if ((u64)pos >= (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_object *object, cachefiles_trace_seek_error); return pos; } - if (pos >= start + *_len) + if ((u64)pos >= (u64)start + *_len) return 0; /* Fully allocated */ /* Partially allocated, but insufficient space: cull. */