From patchwork Mon Dec 22 11:56:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1045 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=1766404654; bh=BT18H0fH1Z2CSiOSJJALcGzVGHN59bJvrLiyL6h/uw0=; 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=ENzP3arKjQ6/B5QbS6aB1aQkVmbTwSsqeT2i2uTDw/hwiU5fgJW6j27tmh92iKeqJ wpyiDqppzdPshz04MUJJrJXiyya42nBfdtmhA1r1R93bJwu7VsvKe8+bRPkKkWlf92 229kTaxExLQ+EmObcluCNeUe1HscC2gRumQ80SJO5fgvrUlzcqC8VfKL9MkZ8jhIRC HKeG1UqUTeQz1iwNxUOB0gi7TTgoiMf0I3jF9oU3/sihsO53OctwU3lfYdgapNmVWD I0PwjiwJA57GkUxAke7n5QHXJZvgo3vsbPPOEx18XauprIN1tHXC1I8jlF4l8tzpmR Qb8vq5xk1aU+Q== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E22BF64D62 for ; Mon, 22 Dec 2025 04:57:34 -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 2hn_UEn8le8G for ; Mon, 22 Dec 2025 04:57:34 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1766404654; bh=BT18H0fH1Z2CSiOSJJALcGzVGHN59bJvrLiyL6h/uw0=; 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=ENzP3arKjQ6/B5QbS6aB1aQkVmbTwSsqeT2i2uTDw/hwiU5fgJW6j27tmh92iKeqJ wpyiDqppzdPshz04MUJJrJXiyya42nBfdtmhA1r1R93bJwu7VsvKe8+bRPkKkWlf92 229kTaxExLQ+EmObcluCNeUe1HscC2gRumQ80SJO5fgvrUlzcqC8VfKL9MkZ8jhIRC HKeG1UqUTeQz1iwNxUOB0gi7TTgoiMf0I3jF9oU3/sihsO53OctwU3lfYdgapNmVWD I0PwjiwJA57GkUxAke7n5QHXJZvgo3vsbPPOEx18XauprIN1tHXC1I8jlF4l8tzpmR Qb8vq5xk1aU+Q== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id CEB0464D3E for ; Mon, 22 Dec 2025 04:57:34 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1766404652; bh=GKgXSWM/PXBKMWaM6y4T37b0M/cG6HkNIMC+x9+QmiQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BKKrSMYrIJo4qYaKG6CUyENVTr/CbqNgKZTZqzkAeZbnPzACayoFv4k4jKrpIu95b MnU6DTC/b/Y2Q+kSzmJlHzDfub4MO7RrfNHHLPSyLckqYJ+UX6q37xTqfWOX1LTeMR RXPVbm/yEpR5UTriEQ476jnLU8xmkmQyxRW3vdhwQyWSD493iD2ulUPqPOOseI1qxB dd6b75KDYZsuwDtredzkUNAy28PQxrbXK7gVG65yOMbeWiNrfujnl662S49Xfo4Je9 5BkgFqDKtqrEZ4+C2pMY+4AhUeKy/SNp0YsQeP+JssUHYwgGV8NsJw/T4fcgNZ9u5r DFQ7n1V6bWtYA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id CA3D064D3E; Mon, 22 Dec 2025 04:57:32 -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 d-yxdpUEzsXj; Mon, 22 Dec 2025 04:57:32 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1766404646; bh=KmvpoClRXf9Gk+ihquXQFEp5EQi3FoFGC06NzwCWDQc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D/ujp3q1kH9YEMm6WVe21Yp/XMbjzcpvfGIqhZRantGBWDt92eagVB/Fi+j5q4/Py NV6VLfpVk+R5H62BJiKXtW5tjgT9gMApJZQ1O/Lk5a3VjSMD4R4952BrNXHswgH0Hf /PH1M3UTqNiG9p7iZObFi+wSJUPABb0bEQEiQg967U0dNOg1OBwOogfTwP9lUwkn38 57iMTZ9ytO06vxTmZMCymyaqD6C+08QzbRFiO0kNj9ZJ27XoM9UQKxWQJCiQm+tn2I OP1hSe5x5QVl6x5I1/66eAaxMtusdwJMNcjawZZnvQYkyUwVKGNU+kZqZQMURWWZrK k1qgIEXZfDNBg== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 52ACA64C31; Mon, 22 Dec 2025 04:57:26 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Mon, 22 Dec 2025 04:56:19 -0700 Message-ID: <20251222115639.700578-16-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222115639.700578-1-sjg@u-boot.org> References: <20251222115639.700578-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: XKXGANO42V52AB7K47PPVFEUY6SJRQMG X-Message-ID-Hash: XKXGANO42V52AB7K47PPVFEUY6SJRQMG 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 15/26] fs: ext4l: Add super_block and block_device allocations 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 Add allocations for super_block, block_device, and address_space structures in ext4l_probe(). These will be needed for the full filesystem mount operation. Use goto-based error handling for proper cleanup on failure. Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- fs/ext4l/interface.c | 49 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/fs/ext4l/interface.c b/fs/ext4l/interface.c index c18ed306f1f..792928b4b6c 100644 --- a/fs/ext4l/interface.c +++ b/fs/ext4l/interface.c @@ -26,6 +26,7 @@ static struct disk_partition ext4l_part; int ext4l_probe(struct blk_desc *fs_dev_desc, struct disk_partition *fs_partition) { + struct super_block *sb; loff_t part_offset; __le16 *magic; u8 *buf; @@ -53,9 +54,31 @@ int ext4l_probe(struct blk_desc *fs_dev_desc, if (ret) return ret; + /* Allocate super_block */ + sb = kzalloc(sizeof(struct super_block), GFP_KERNEL); + if (!sb) { + ret = -ENOMEM; + goto err_exit_es; + } + + /* Allocate block_device */ + sb->s_bdev = kzalloc(sizeof(struct block_device), GFP_KERNEL); + if (!sb->s_bdev) { + ret = -ENOMEM; + goto err_free_sb; + } + + sb->s_bdev->bd_mapping = kzalloc(sizeof(struct address_space), GFP_KERNEL); + if (!sb->s_bdev->bd_mapping) { + ret = -ENOMEM; + goto err_free_bdev; + } + buf = malloc(BLOCK_SIZE + 512); - if (!buf) - return -ENOMEM; + if (!buf) { + ret = -ENOMEM; + goto err_free_mapping; + } /* Calculate partition offset in bytes */ part_offset = fs_partition ? (loff_t)fs_partition->start * fs_dev_desc->blksz : 0; @@ -65,7 +88,7 @@ int ext4l_probe(struct blk_desc *fs_dev_desc, (part_offset + BLOCK_SIZE) / fs_dev_desc->blksz, 2, buf) != 2) { ret = -EIO; - goto out; + goto err_free_buf; } /* Check magic number within superblock */ @@ -73,7 +96,7 @@ int ext4l_probe(struct blk_desc *fs_dev_desc, offsetof(struct ext4_super_block, s_magic)); if (le16_to_cpu(*magic) != EXT4_SUPER_MAGIC) { ret = -EINVAL; - goto out; + goto err_free_buf; } /* Save device info for later operations */ @@ -81,9 +104,23 @@ int ext4l_probe(struct blk_desc *fs_dev_desc, if (fs_partition) memcpy(&ext4l_part, fs_partition, sizeof(ext4l_part)); - ret = 0; -out: free(buf); + kfree(sb->s_bdev->bd_mapping); + kfree(sb->s_bdev); + kfree(sb); + + return 0; + +err_free_buf: + free(buf); +err_free_mapping: + kfree(sb->s_bdev->bd_mapping); +err_free_bdev: + kfree(sb->s_bdev); +err_free_sb: + kfree(sb); +err_exit_es: + ext4_exit_es(); return ret; }