quota: avoid printing an uninitialized blk number

Message ID 20240213101733.461544-1-arnd@kernel.org
State New
Headers
Series quota: avoid printing an uninitialized blk number |

Commit Message

Arnd Bergmann Feb. 13, 2024, 10:17 a.m. UTC
  From: Arnd Bergmann <arnd@arndb.de>

The error path of find_tree_dqentry() now prints a variable that is
never initialized:

fs/quota/quota_tree.c:674:8: error: variable 'blk' is uninitialized when used here [-Werror,-Wuninitialized]
                            blk);
                            ^~~
include/linux/quotaops.h:34:41: note: expanded from macro 'quota_error'
        __quota_error((sb), __func__, fmt , ## args)
                                               ^~~~

Move the calculation of the block number slightly up to make it
show a sensible number.

Fixes: 223bfb57631b ("quota: Detect loops in quota tree")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/quota/quota_tree.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Jan Kara Feb. 13, 2024, 10:21 a.m. UTC | #1
On Tue 13-02-24 11:17:28, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The error path of find_tree_dqentry() now prints a variable that is
> never initialized:
> 
> fs/quota/quota_tree.c:674:8: error: variable 'blk' is uninitialized when used here [-Werror,-Wuninitialized]
>                             blk);
>                             ^~~
> include/linux/quotaops.h:34:41: note: expanded from macro 'quota_error'
>         __quota_error((sb), __func__, fmt , ## args)
>                                                ^~~~
> 
> Move the calculation of the block number slightly up to make it
> show a sensible number.
> 
> Fixes: 223bfb57631b ("quota: Detect loops in quota tree")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Arnd, this should be fixed in my tree as of yesterday and I can see that
you've even based your patch on a fixed kernel :)

								Honza

> ---
>  fs/quota/quota_tree.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c
> index afceef3ddfaa..05ae39f9b1ac 100644
> --- a/fs/quota/quota_tree.c
> +++ b/fs/quota/quota_tree.c
> @@ -669,13 +669,13 @@ static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info,
>  	if (!buf)
>  		return -ENOMEM;
>  	ret = read_blk(info, blks[depth], buf);
> +	blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
>  	if (ret < 0) {
>  		quota_error(dquot->dq_sb, "Can't read quota tree block %u",
>  			    blks[depth]);
>  		goto out_buf;
>  	}
>  	ret = 0;
> -	blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
>  	if (!blk)	/* No reference? */
>  		goto out_buf;
>  	ret = do_check_range(dquot->dq_sb, "block", blk, QT_TREEOFF,
> -- 
> 2.39.2
>
  
Arnd Bergmann Feb. 13, 2024, 10:26 a.m. UTC | #2
On Tue, Feb 13, 2024, at 11:21, Jan Kara wrote:
> On Tue 13-02-24 11:17:28, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> The error path of find_tree_dqentry() now prints a variable that is
>> never initialized:
>> 
>> fs/quota/quota_tree.c:674:8: error: variable 'blk' is uninitialized when used here [-Werror,-Wuninitialized]
>>                             blk);
>>                             ^~~
>> include/linux/quotaops.h:34:41: note: expanded from macro 'quota_error'
>>         __quota_error((sb), __func__, fmt , ## args)
>>                                                ^~~~
>> 
>> Move the calculation of the block number slightly up to make it
>> show a sensible number.
>> 
>> Fixes: 223bfb57631b ("quota: Detect loops in quota tree")
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Arnd, this should be fixed in my tree as of yesterday and I can see that
> you've even based your patch on a fixed kernel :)

Right, sorry about that. I did a lot of fixes yesterday and
sent them out after making sure they did not cause any new
failures in an overnight test build, but did not check carefully
during rebasing.

     Arnd
  

Patch

diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c
index afceef3ddfaa..05ae39f9b1ac 100644
--- a/fs/quota/quota_tree.c
+++ b/fs/quota/quota_tree.c
@@ -669,13 +669,13 @@  static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info,
 	if (!buf)
 		return -ENOMEM;
 	ret = read_blk(info, blks[depth], buf);
+	blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
 	if (ret < 0) {
 		quota_error(dquot->dq_sb, "Can't read quota tree block %u",
 			    blks[depth]);
 		goto out_buf;
 	}
 	ret = 0;
-	blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
 	if (!blk)	/* No reference? */
 		goto out_buf;
 	ret = do_check_range(dquot->dq_sb, "block", blk, QT_TREEOFF,