From patchwork Tue Dec 30 23:41:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1137 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138317; bh=ZLXHjPyifleY4qMP5hiuTrHqocik3ZJSrj1hRoYRILI=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=FFC6QOumU859HygykOoJENQqIOOdNopirdr5QfieHy1vDbTZph/ba17UezfROxMyV s/KltN1BqVMtCLRTMWbCqtmrzK4r0Bf/wExBR0g91qeIsYizsoqLd0L7rKKZVlW9K+ uHAlbo66MPNbaPrWJD9VNANzLo1xuBCBOmwJX3DSMGwfWLV4ycjZRE77GSZ2CizzDD qdDBrrDbmCqL0HWhLHWz245lHPKITOmN4/zsnKyOenxV5/j3RBoOf2fwdW8hhRnueM q1E0MoxJWLY0iMfV1TRJbsw7H90EnodPifNCIyH4sjkCn7O2HXcfdUdIZvKY8nkKV4 d3bF9IqYClKMg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E7C1768C0F for ; Tue, 30 Dec 2025 16:45:17 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id R5jWi0jBY9pO for ; Tue, 30 Dec 2025 16:45:17 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138317; bh=ZLXHjPyifleY4qMP5hiuTrHqocik3ZJSrj1hRoYRILI=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=FFC6QOumU859HygykOoJENQqIOOdNopirdr5QfieHy1vDbTZph/ba17UezfROxMyV s/KltN1BqVMtCLRTMWbCqtmrzK4r0Bf/wExBR0g91qeIsYizsoqLd0L7rKKZVlW9K+ uHAlbo66MPNbaPrWJD9VNANzLo1xuBCBOmwJX3DSMGwfWLV4ycjZRE77GSZ2CizzDD qdDBrrDbmCqL0HWhLHWz245lHPKITOmN4/zsnKyOenxV5/j3RBoOf2fwdW8hhRnueM q1E0MoxJWLY0iMfV1TRJbsw7H90EnodPifNCIyH4sjkCn7O2HXcfdUdIZvKY8nkKV4 d3bF9IqYClKMg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id BD34264E2A for ; Tue, 30 Dec 2025 16:45:17 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138314; bh=D760mnHYbOoXxlGrrPV/mmCYM7ML56jEyaZhqmxcuuY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pXT0YWnemnI9T9R/9fktJ5Yi5Csrltd4fStgOZYOc99zghzI4GoBSs1dauAmg3jNE uWK8vMMnJPFk6c1UJF62WUc4qL0b0Z196S9VT9JbuEzTAqXHzwoiUWV1xEFTvu3IxU VnAeqBEVKZ2a03y54sb4QnEB4sFfwa3mjkRUkENZmiLV63y0sxePftTXAuHGis33Jr BWe8an2SRn9pzKrQTzhAWjvkfbhatI4t8Gb4pSiil60ydNuNjg1KjUq4a+841/OCzt oDrR1jaZTKZYmo8HSdM1lo2blBc1AoI7hJam16SFn6Mg/eoIe5jpmL2+bxa+xgry7u 2NgEAMDnHwLzQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 5C9F868C06; Tue, 30 Dec 2025 16:45:14 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id nMiWw5Y-RUJo; Tue, 30 Dec 2025 16:45:14 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138309; bh=q9fbyfRbgRm40Udq1WcJeYLrvFnOnFu088GYksy2VWI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=S9hszDTG6iNJAWUVQoaN6+7i6ZaMvYhwSfkGREEiGYKtbz2iSggOpiVy9QC3ECqCQ utxUy98AUrUuBOO3CIdJsYeZ+VHu19tN8eLc067m5Qr2VQWMQMiCn+HbYFU/M4zhU7 PwjrLUs2AlkFteaq7S9R5AoT3hA0OJ5viaArDbeKms4f3oihEF0pwY8p5bWDlcTETr feP7tEMCcBCkqNyiwIXz2Ixl9gKyA7ZKKC+3+Gj5Xy7pHGod0byeHnJOY9U2/CWV7X xLmNmXrLlgA7jXYcHKLDNw8E5k+GAc+4zAMHJHhubq8VyTVcqtHehOzDW9F4LvZjHl m70+NFuEkYDuQ== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 57A0168F98; Tue, 30 Dec 2025 16:45:09 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Tue, 30 Dec 2025 16:41:26 -0700 Message-ID: <20251230234134.906477-15-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251230234134.906477-1-sjg@u-boot.org> References: <20251230234134.906477-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: UINWQBXRZKJJCPCLV4PRVIYNURARUVBH X-Message-ID-Hash: UINWQBXRZKJJCPCLV4PRVIYNURARUVBH X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , "Claude Opus 4 . 5" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 14/15] ext4l: Fix bit operations for bits beyond first word List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The set_bit(), clear_bit(), and change_bit() functions only modify the first word of a bitmap, regardless of the bit number. For bit numbers >= 64 on 64-bit systems, the shift wraps around and modifies the wrong bit position. Fix these functions to properly calculate the word offset before modifying the bit. This is needed for block bitmap operations where bit numbers can be in the thousands. Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- fs/ext4l/stub.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/ext4l/stub.c b/fs/ext4l/stub.c index 2b7618df64c..f072cb5713f 100644 --- a/fs/ext4l/stub.c +++ b/fs/ext4l/stub.c @@ -77,26 +77,27 @@ typedef struct journal_s journal_t; /* * Bit operations - sandbox declares these extern but doesn't implement them. + * These work on bitmaps where nr is the absolute bit number. */ void set_bit(int nr, void *addr) { - unsigned long *p = (unsigned long *)addr; + unsigned long *p = (unsigned long *)addr + (nr / BITS_PER_LONG); - *p |= (1UL << nr); + *p |= (1UL << (nr % BITS_PER_LONG)); } void clear_bit(int nr, void *addr) { - unsigned long *p = (unsigned long *)addr; + unsigned long *p = (unsigned long *)addr + (nr / BITS_PER_LONG); - *p &= ~(1UL << nr); + *p &= ~(1UL << (nr % BITS_PER_LONG)); } void change_bit(int nr, void *addr) { - unsigned long *p = (unsigned long *)addr; + unsigned long *p = (unsigned long *)addr + (nr / BITS_PER_LONG); - *p ^= (1UL << nr); + *p ^= (1UL << (nr % BITS_PER_LONG)); } /*