[PATCH] zonefs: Fix the wrong format specifier

Zhu Jun posted 1 patch 1 year, 2 months ago
There is a newer version of this series
fs/zonefs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] zonefs: Fix the wrong format specifier
Posted by Zhu Jun 1 year, 2 months ago
The format specifier of "signed int" in snprintf() should be "%d", not
"%u".

Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
---
 fs/zonefs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
index faf1eb87895d..43c2f4a59b50 100644
--- a/fs/zonefs/super.c
+++ b/fs/zonefs/super.c
@@ -811,7 +811,7 @@ static int zonefs_readdir_zgroup(struct file *file,
 	for (f = ctx->pos - 2; f < zgroup->g_nr_zones; f++) {
 		z = &zgroup->g_zones[f];
 		ino = z->z_sector >> sbi->s_zone_sectors_shift;
-		fname_len = snprintf(fname, ZONEFS_NAME_MAX - 1, "%u", f);
+		fname_len = snprintf(fname, ZONEFS_NAME_MAX - 1, "%d", f);
 		if (!dir_emit(ctx, fname, fname_len, ino, DT_REG))
 			break;
 		ctx->pos++;
-- 
2.17.1
Re: [PATCH] zonefs: Fix the wrong format specifier
Posted by Damien Le Moal 1 year, 2 months ago
On 11/11/24 14:41, Zhu Jun wrote:
> The format specifier of "signed int" in snprintf() should be "%d", not
> "%u".

My apologies for the late reply.

A better fix is to make f "unsigned int" as that is consistent with
g_nr_zones and the fact that up to "unsigned int" total number of zones are
allowed for a zoned device.

Can you send a v2 ? Also please add a Fixes tag.

> 
> Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
> ---
>  fs/zonefs/super.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
> index faf1eb87895d..43c2f4a59b50 100644
> --- a/fs/zonefs/super.c
> +++ b/fs/zonefs/super.c
> @@ -811,7 +811,7 @@ static int zonefs_readdir_zgroup(struct file *file,
>  	for (f = ctx->pos - 2; f < zgroup->g_nr_zones; f++) {
>  		z = &zgroup->g_zones[f];
>  		ino = z->z_sector >> sbi->s_zone_sectors_shift;
> -		fname_len = snprintf(fname, ZONEFS_NAME_MAX - 1, "%u", f);
> +		fname_len = snprintf(fname, ZONEFS_NAME_MAX - 1, "%d", f);
>  		if (!dir_emit(ctx, fname, fname_len, ino, DT_REG))
>  			break;
>  		ctx->pos++;


-- 
Damien Le Moal
Western Digital Research
Re: [PATCH] zonefs: Fix the wrong format specifier
Posted by Chaitanya Kulkarni 1 year, 2 months ago
On 11/10/24 21:41, Zhu Jun wrote:
> The format specifier of "signed int" in snprintf() should be "%d", not
> "%u".
>
> Signed-off-by: Zhu Jun<zhujun2@cmss.chinamobile.com>

Indeed :-
794         int f;

Looks good.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>

-ck