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
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.