Re: [PATCH 4/4] generic/775: Fix an infinite loop due to variable name clash
"Darrick J. Wong" <[email protected]>
| Newsgroups | org.kernel.vger.fstests |
|---|---|
| Message-ID | <20260401143218.GI6212@frogsfrogsfrogs> |
On Wed, Apr 01, 2026 at 04:10:50PM +0530, Ojaswin Mujoo wrote: > We use i as the iteration variable in the main test loop as well as some > internal loops. Due to this clash, $i variable of main test loops was > getting modified by the following loop in prep_mixed_mapping(). > > for ((i=0; i<num_blocks; i++)); do > > If num_blocks is less than 10 (example ext4 with blocksize 4k and > cluster size 8k) i would always be set as 3 and the main loop would > never exit. Take the simplest approach of just renaming the variable. > > Reported-by: Disha Goel <[email protected]> > Signed-off-by: Ojaswin Mujoo <[email protected]> > --- > tests/generic/775 | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/generic/775 b/tests/generic/775 > index 2a4287bb..19ae95e2 100755 > --- a/tests/generic/775 > +++ b/tests/generic/775 > @@ -41,7 +41,7 @@ prep_mixed_mapping() { > > local operations=("W" "H" "U") > local num_blocks=$((awu_max / blksz)) > - for ((i=0; i<num_blocks; i++)); do > + for ((j=0; j<num_blocks; j++)); do You're right that the single-letter variables are a really bad idea in languages like bash/python/etc where functions can see variables in caller's scope if they're not explicitly marked local. But a) why not use "local i" to prevent that; and (b) if you're going to rename it, why not "blkno"? --D > local index=$((RANDOM % ${#operations[@]})) > local map="${operations[$index]}" > local mapping="${mapping}${map}" > -- > 2.53.0 > >