udf: fix sparse warnings (shadowing & mismatch between declaration and definition)
PATCH 6/6 udf: fix sparse warnings (shadowing & mismatch between declaration and definition)
fix warnings:fs/udf/super.c:1320:24: warning: symbol 'bh' shadows an earlier one fs/udf/super.c:1240:21: originally declared herefs/udf/super.c:1583:4: warning: symbol 'i' shadows an earlier one fs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1585:4: warning: symbol 'i' shadows an earlier one fs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1658:4: warning: symbol 'i' shadows an earlier one fs/udf/super.c:1648:6: originally declared herefs/udf/super.c:1660:4: warning: symbol 'i' shadows an earlier one fs/udf/super.c:1648:6: originally declared herefs/udf/super.c:450:6: warning: symbol 'udf_write_super' was not declared. Should it be static?
--- fs/udf/super.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-)
fs/udf/super.c +7 -8
@@ -447,7 +447,7 @@ static int udf_parse_options(char *options, struct udf_options *uopt)return 1 ; } -void udf_write_super (struct super_block *sb) +static void udf_write_super (struct super_block *sb) {lock_kernel ();
@@ -1317,7 +1317,6 @@ static int udf_load_partition(struct super_block *sb, kernel_lb_addr *fileset)UDF_SB_TYPEVIRT (sb, i).s_num_entries = (UDF_SB_VAT (sb)->i_size -36 ) >>2 ; }else if (UDF_SB_PARTTYPE (sb, i) ==UDF_VIRTUAL_MAP20 ) { -struct buffer_head *bh =NULL ;uint32_t pos; pos =udf_block_map (UDF_SB_VAT (sb),0 );
@@ -1415,7 +1414,7 @@ static void udf_close_lvid(struct super_block *sb)*/ static int udf_fill_super (struct super_block *sb,void *options,int silent) { -int i; +int idx;struct inode *inode =NULL ;struct udf_options uopt;kernel_lb_addr rootdir, fileset;
@@ -1584,8 +1583,8 @@ error_out:if (UDF_SB_PARTFLAGS (sb,UDF_SB_PARTITION (sb)) &UDF_PART_FLAG_FREED_BITMAP )UDF_SB_FREE_BITMAP (sb,UDF_SB_PARTITION (sb), s_fspace);if (UDF_SB_PARTTYPE (sb,UDF_SB_PARTITION (sb)) ==UDF_SPARABLE_MAP15 ) { -for (i =0 ; i <4 ; i++) -brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[i]); +for (idx =0 ; idx <4 ; idx++) +brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[idx]); } }#ifdef CONFIG_UDF_NLS
@@ -1645,7 +1644,7 @@ void udf_warning(struct super_block *sb, const char *function,*/ static void udf_put_super (struct super_block *sb) { -int i; +int idx;if (UDF_SB_VAT (sb))iput (UDF_SB_VAT (sb));
@@ -1659,8 +1658,8 @@ static void udf_put_super(struct super_block *sb)if (UDF_SB_PARTFLAGS (sb,UDF_SB_PARTITION (sb)) &UDF_PART_FLAG_FREED_BITMAP )UDF_SB_FREE_BITMAP (sb,UDF_SB_PARTITION (sb), s_fspace);if (UDF_SB_PARTTYPE (sb,UDF_SB_PARTITION (sb)) ==UDF_SPARABLE_MAP15 ) { -for (i =0 ; i <4 ; i++) -brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[i]); +for (idx =0 ; idx <4 ; idx++) +brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[idx]); } }#ifdef CONFIG_UDF_NLS
--
1.5.3.4
Quoted 13 lines
fix warnings:
fs/udf/super.c:1320:24: warning: symbol 'bh' shadows an earlier onefs/udf/super.c:1240:21: originally declared herefs/udf/super.c:1583:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1585:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1658:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:1660:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:450:6: warning: symbol 'udf_write_super' was not declared. Should it be static?
Quoted 2 lines
Signed-off-by Marcin Slusarz <[email protected]>CC Ben Fennema <[email protected]>
Thanks for the patch. The 'bh' change is fine. The problems with 'i'
should be solved differently I think. Those functions UDF_SB_FREE, UDF_SB_ALLOC_PARTMAPS should be functions and not macros. Please convert those to either inline functions if they are small or to regular functions if they are larger. It won't be completely trivial because of the hackery e.g. in UDF_SB_ALLOC_BITMAP. It gets an argument meaning on which struct member something should be performed. But for example in the UDF_SB_ALLOC_BITMAP case you can simply make the function return the pointer to allocated and initialized space and the caller would assign it to a proper element of the superblock. This would help the overall code quality of UDF (which is sadly quite poor). Thanks.
Honza
Quoted 73 lines
--- fs/udf/super.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-)fs/udf/super.c +7
-9@@ -447,7 +447,7 @@ static int udf_parse_options(char *options, struct udf_options *uopt)return 1 ; } -void udf_write_super (struct super_block *sb) +static void udf_write_super (struct super_block *sb) {lock_kernel ();@@ -1317,7 +1317,6 @@ static int udf_load_partition(struct super_block *sb, kernel_lb_addr *fileset)UDF_SB_TYPEVIRT (sb, i).s_num_entries = (UDF_SB_VAT (sb)->i_size -36 ) >>2 ; }else if (UDF_SB_PARTTYPE (sb, i) ==UDF_VIRTUAL_MAP20 ) { -struct buffer_head *bh =NULL ;uint32_t pos; pos =udf_block_map (UDF_SB_VAT (sb),0 );@@ -1415,7 +1414,7 @@ static void udf_close_lvid(struct super_block *sb)*/ static int udf_fill_super (struct super_block *sb,void *options,int silent) { -int i; +int idx;struct inode *inode =NULL ;struct udf_options uopt;kernel_lb_addr rootdir, fileset;@@ -1584,8 +1583,8 @@ error_out:if (UDF_SB_PARTFLAGS (sb,UDF_SB_PARTITION (sb)) &UDF_PART_FLAG_FREED_BITMAP )UDF_SB_FREE_BITMAP (sb,UDF_SB_PARTITION (sb), s_fspace);if (UDF_SB_PARTTYPE (sb,UDF_SB_PARTITION (sb)) ==UDF_SPARABLE_MAP15 ) { -for (i =0 ; i <4 ; i++) -brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[i]); +for (idx =0 ; idx <4 ; idx++) +brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[idx]); } }#ifdef CONFIG_UDF_NLS @@ -1645,7 +1644,7 @@ void udf_warning(struct super_block *sb, const char *function,*/ static void udf_put_super (struct super_block *sb) { -int i; +int idx;if (UDF_SB_VAT (sb))iput (UDF_SB_VAT (sb));@@ -1659,8 +1658,8 @@ static void udf_put_super(struct super_block *sb)if (UDF_SB_PARTFLAGS (sb,UDF_SB_PARTITION (sb)) &UDF_PART_FLAG_FREED_BITMAP )UDF_SB_FREE_BITMAP (sb,UDF_SB_PARTITION (sb), s_fspace);if (UDF_SB_PARTTYPE (sb,UDF_SB_PARTITION (sb)) ==UDF_SPARABLE_MAP15 ) { -for (i =0 ; i <4 ; i++) -brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[i]); +for (idx =0 ; idx <4 ; idx++) +brelse (UDF_SB_TYPESPAR (sb,UDF_SB_PARTITION (sb)).s_spar_map[idx]); } }#ifdef CONFIG_UDF_NLS --1.5.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Signature · 2 lines
Jan Kara <[email protected]> SuSE CR Labs
Quoted 15 lines · Jan Kara
Quoted 13 lines
fix warnings:
fs/udf/super.c:1320:24: warning: symbol 'bh' shadows an earlier onefs/udf/super.c:1240:21: originally declared herefs/udf/super.c:1583:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1585:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1658:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:1660:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:450:6: warning: symbol 'udf_write_super' was not declared. Should it be static?Quoted 2 lines
Signed-off-by Marcin Slusarz <[email protected]>CC Ben Fennema <[email protected]>
Quoted 10 lines
Thanks for the patch. The 'bh' change is fine. The problems with 'i'
should be solved differently I think. Those functionsUDF_SB_FREE,UDF_SB_ALLOC_PARTMAPSshould be functions and not macros. Please convert those to either inline functions if they are small or to regular functions if they are larger. It won't be completely trivial because of the hackery e.g. inUDF_SB_ALLOC_BITMAP. It gets an argument meaning on which struct member something should be performed. But for example in theUDF_SB_ALLOC_BITMAPcase you can simply make the function return the pointer to allocated and initialized space and the caller would assign it to a proper element of the superblock.
Ok, I'll try to do it.
Quoted 2 lines
This would help the overall
code quality of UDF (which is sadly quite poor).
If you have other suggestions how to clean up this code, let me know. I'll see what I can do with them ;)
Marcin
Quoted 26 lines · Marcin Slusarz
Quoted 15 lines · Jan Kara
Quoted 13 lines
fix warnings:
fs/udf/super.c:1320:24: warning: symbol 'bh' shadows an earlier onefs/udf/super.c:1240:21: originally declared herefs/udf/super.c:1583:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1585:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1418:6: originally declared herefs/udf/super.c:1658:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:1660:4: warning: symbol 'i' shadows an earlier onefs/udf/super.c:1648:6: originally declared herefs/udf/super.c:450:6: warning: symbol 'udf_write_super' was not declared. Should it be static?Quoted 2 lines
Signed-off-by Marcin Slusarz <[email protected]>CC Ben Fennema <[email protected]>Quoted 10 lines
Thanks for the patch. The 'bh' change is fine. The problems with 'i'
should be solved differently I think. Those functionsUDF_SB_FREE,UDF_SB_ALLOC_PARTMAPSshould be functions and not macros. Please convert those to either inline functions if they are small or to regular functions if they are larger. It won't be completely trivial because of the hackery e.g. inUDF_SB_ALLOC_BITMAP. It gets an argument meaning on which struct member something should be performed. But for example in theUDF_SB_ALLOC_BITMAPcase you can simply make the function return the pointer to allocated and initialized space and the caller would assign it to a proper element of the superblock.
Quoted 1 line
Ok, I'll try to do it.
Thanks.
Quoted 4 lines
Quoted 2 lines
This would help the overall
code quality of UDF (which is sadly quite poor).If you have other suggestions how to clean up this code, let me know. I'll see what I can do with them ;)
Hmm, it's hard to formulate precisely. It's nothing particular but all in
all the code is simply hard to read - all those strange names of variables, unusual sideeffects of functions, ... But one specific problem I'm aware of is the lack of error handling so in case of IO error or filesystem corruption results are quite spectacular (kernel crash, etc.).
Honza
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR