2014-06-01 13:52:13

by Rickard Strandqvist

[permalink] [raw]
Subject: [PATCH] fs: ocfs2: dir.c: Cleaning up uninitialized variables

There is a risk that the variable will be used without being initialized.

This was largely found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <[email protected]>
---
fs/ocfs2/dir.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
index 0717662..27aa4a1 100644
--- a/fs/ocfs2/dir.c
+++ b/fs/ocfs2/dir.c
@@ -3738,7 +3738,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
int credits, ret, i, num_used, did_quota = 0;
u32 cpos, split_hash, insert_hash = hinfo->major_hash;
u64 orig_leaves_start;
- int num_dx_leaves;
+ int num_dx_leaves = 0;
struct buffer_head **orig_dx_leaves = NULL;
struct buffer_head **new_dx_leaves = NULL;
struct ocfs2_alloc_context *data_ac = NULL, *meta_ac = NULL;
--
1.7.10.4


2014-06-02 18:44:23

by Srinivas Eeda

[permalink] [raw]
Subject: Re: [PATCH] fs: ocfs2: dir.c: Cleaning up uninitialized variables

Acked-by: Srinivas Eeda <[email protected]>

On 06/01/2014 06:53 AM, Rickard Strandqvist wrote:
> There is a risk that the variable will be used without being initialized.
>
> This was largely found by using a static code analysis program called cppcheck.
>
> Signed-off-by: Rickard Strandqvist <[email protected]>
> ---
> fs/ocfs2/dir.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
> index 0717662..27aa4a1 100644
> --- a/fs/ocfs2/dir.c
> +++ b/fs/ocfs2/dir.c
> @@ -3738,7 +3738,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
> int credits, ret, i, num_used, did_quota = 0;
> u32 cpos, split_hash, insert_hash = hinfo->major_hash;
> u64 orig_leaves_start;
> - int num_dx_leaves;
> + int num_dx_leaves = 0;
> struct buffer_head **orig_dx_leaves = NULL;
> struct buffer_head **new_dx_leaves = NULL;
> struct ocfs2_alloc_context *data_ac = NULL, *meta_ac = NULL;

2014-06-02 20:22:21

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] fs: ocfs2: dir.c: Cleaning up uninitialized variables

On Sun, 1 Jun 2014 15:53:04 +0200 Rickard Strandqvist <[email protected]> wrote:

> There is a risk that the variable will be used without being initialized.

um, no there isn't.

> --- a/fs/ocfs2/dir.c
> +++ b/fs/ocfs2/dir.c
> @@ -3738,7 +3738,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
> int credits, ret, i, num_used, did_quota = 0;
> u32 cpos, split_hash, insert_hash = hinfo->major_hash;
> u64 orig_leaves_start;
> - int num_dx_leaves;
> + int num_dx_leaves = 0;
> struct buffer_head **orig_dx_leaves = NULL;
> struct buffer_head **new_dx_leaves = NULL;
> struct ocfs2_alloc_context *data_ac = NULL, *meta_ac = NULL;

If ocfs2_dx_dir_kmalloc_leaves() returns non-zero, num_dx_leaves will
have been initialized.

2014-06-02 22:03:29

by Rickard Strandqvist

[permalink] [raw]
Subject: Re: [PATCH] fs: ocfs2: dir.c: Cleaning up uninitialized variables

Hi

Yes, but if() above, there may be a:
goto out;

Or if kcalloc() fails in ocfs2_dx_dir_kmalloc_leaves() the variable
num_dx_leaves will not be set to any value.

But now that I look more carefully at it, I see that in the cases
orig_dx_leaves and new_dx_leaves ar NULL, so nothing will happen in
the out: part of the code.

Sorry about this :-(


Best regards
Rickard Strandqvist


2014-06-02 22:22 GMT+02:00 Andrew Morton <[email protected]>:
> On Sun, 1 Jun 2014 15:53:04 +0200 Rickard Strandqvist <[email protected]> wrote:
>
>> There is a risk that the variable will be used without being initialized.
>
> um, no there isn't.
>
>> --- a/fs/ocfs2/dir.c
>> +++ b/fs/ocfs2/dir.c
>> @@ -3738,7 +3738,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
>> int credits, ret, i, num_used, did_quota = 0;
>> u32 cpos, split_hash, insert_hash = hinfo->major_hash;
>> u64 orig_leaves_start;
>> - int num_dx_leaves;
>> + int num_dx_leaves = 0;
>> struct buffer_head **orig_dx_leaves = NULL;
>> struct buffer_head **new_dx_leaves = NULL;
>> struct ocfs2_alloc_context *data_ac = NULL, *meta_ac = NULL;
>
> If ocfs2_dx_dir_kmalloc_leaves() returns non-zero, num_dx_leaves will
> have been initialized.
>