From: sashiko-bot@kernel.org
To: "Jinjie Ruan" <ruanjinjie@huawei.com>
Cc: "Vincent Mailhol" <mailhol@kernel.org>,
tytso@mit.edu, "Marc Kleine-Budde" <mkl@pengutronix.de>,
linux-can@vger.kernel.org,
"Oliver Hartkopp" <socketcan@hartkopp.net>,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
linux-ext4@vger.kernel.org
Subject: Re: [PATCH 07/11] ext4: Convert group-count barrier protocol to acquire/release
Date: Wed, 26 Aug 2026 09:54:22 +0000 [thread overview]
Message-ID: <20260826095422.6F20E1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260825095422.3166067-8-ruanjinjie@huawei.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] ext4_get_group_info() reads s_groups_count without an acquire barrier, leading to potential out-of-bounds array access during online resize.
--
--- Patch [7]: [PATCH 07/11] ext4: Convert group-count barrier protocol to acquire/release ---
commit f34a19e39cbb154b52efeb9c4d1fc4d48a993810
Author: Jinjie Ruan <ruanjinjie@huawei.com>
ext4: Convert group-count barrier protocol to acquire/release
During an online resize, reading s_groups_count and s_blockfile_groups
requires strict ordering against initialized block group metadata. This
commit replaces the smp_wmb()/smp_rmb() pairs with smp_store_release()
and smp_load_acquire().
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index 2fdff50526e93..e7f15c9e9187a 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -3527,16 +3527,12 @@ static inline void ext4_isize_set(struct ext4_inode *raw_inode, loff_t i_size)
> }
>
> /*
> - * Reading s_groups_count requires using smp_rmb() afterwards. See
> - * the locking protocol documented in the comments of ext4_group_add()
> - * in resize.c
> + * Reading s_groups_count uses acquire semantics.
> */
> static inline ext4_group_t ext4_get_groups_count(struct super_block *sb)
> {
> - ext4_group_t ngroups = EXT4_SB(sb)->s_groups_count;
> -
> - smp_rmb();
> - return ngroups;
> + /* Pairs with smp_store_release() in ext4_update_super() */
> + return smp_load_acquire(&EXT4_SB(sb)->s_groups_count);
> }
[Severity: High]
This is a pre-existing issue, but since we are formalizing the barrier
protocol around s_groups_count, should we also fix the plain read of
s_groups_count in ext4_get_group_info()?
If a concurrent reader calls ext4_get_group_info() during an online resize:
fs/ext4/balloc.c:ext4_get_group_info() {
...
if (unlikely(group >= EXT4_SB(sb)->s_groups_count))
return NULL;
indexv = group >> (EXT4_DESC_PER_BLOCK_BITS(sb));
indexh = group & ((EXT4_DESC_PER_BLOCK(sb)) - 1);
grp_info = sbi_array_rcu_deref(EXT4_SB(sb), s_group_info, indexv);
...
}
Because there is no acquire barrier (it does not use ext4_get_groups_count()),
can the CPU speculatively execute the rcu_dereference of s_group_info before
the load of s_groups_count?
If the resize writer just published a newly allocated s_group_info array
and incremented s_groups_count via smp_store_release() in ext4_update_super(),
could this reader see the new s_groups_count but load the old s_group_info
array pointer?
If so, would the boundary check pass, causing an out-of-bounds read into the
old, smaller array using the new group index?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825095422.3166067-1-ruanjinjie@huawei.com?part=7
next prev parent reply other threads:[~2026-08-26 9:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 9:54 [PATCH 00/11] Convert barrier pairs to acquire/release for better performance Jinjie Ruan
2026-08-25 9:54 ` [PATCH 01/11] user_namespace: Use acquire/release for nr_extents synchronization Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-09-01 1:42 ` Jinjie Ruan
2026-08-25 9:54 ` [PATCH 02/11] lib/vsprintf: Use acquire/release for ptr_key publication Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-25 9:54 ` [PATCH 03/11] fs: aio: Use acquire/release for ring->tail publication Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-31 12:13 ` Jan Kara
2026-09-01 1:44 ` Jinjie Ruan
2026-08-25 9:54 ` [PATCH 04/11] fs: Use acquire/release for fdtable resize synchronization Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-31 12:22 ` Jan Kara
2026-08-25 9:54 ` [PATCH 05/11] pidfs: Use test_bit_acquire() for attr flag tests Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-25 9:54 ` [PATCH 06/11] super: Use acquire for SB_BORN check in super_cache_count() Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-31 12:29 ` Jan Kara
2026-08-31 12:46 ` Jinjie Ruan
2026-08-25 9:54 ` [PATCH 07/11] ext4: Convert group-count barrier protocol to acquire/release Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot [this message]
2026-08-31 11:53 ` Jan Kara
2026-08-31 12:18 ` Zhang Yi
2026-08-25 9:54 ` [PATCH 08/11] soreuseport: publish num_socks with acquire/release Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-25 9:54 ` [PATCH 09/11] net: sched: act_gact: use acquire/release for tcfg_ptype Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-25 9:54 ` [PATCH 10/11] 8021q: publish vlan_devices_arrays entries with acquire/release Jinjie Ruan
2026-08-26 9:54 ` sashiko-bot
2026-08-25 9:54 ` [PATCH 11/11] can: isotp: publish tx.state with smp_store_release() Jinjie Ruan
2026-08-25 11:46 ` Oliver Hartkopp
2026-08-26 3:33 ` Jinjie Ruan
2026-08-26 8:04 ` Oliver Hartkopp
2026-08-26 9:54 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260826095422.6F20E1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=mailhol@kernel.org \
--cc=mkl@pengutronix.de \
--cc=o.rempel@pengutronix.de \
--cc=ruanjinjie@huawei.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=socketcan@hartkopp.net \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.