diff mbox

Btrfs: make sure fs_info is not null before its field is used in __btrfs_panic

Message ID 1354894924-13050-1-git-send-email-shhuiw@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wang Sheng-Hui Dec. 7, 2012, 3:42 p.m. UTC
We should make sure fs_info is not null before we refer to its field.
Add simple check here.

Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
---
 fs/btrfs/super.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Zefan Li Dec. 8, 2012, 10:10 a.m. UTC | #1
On 2012/12/7 23:42, Wang Sheng-Hui wrote:
> We should make sure fs_info is not null before we refer to its field.
> Add simple check here.

Why? Is there any caller passing NULL @fs_info to this function?

> 
> Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
> ---
>  fs/btrfs/super.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index 915ac14..c6a3633 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -280,7 +280,7 @@ void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
>  	vaf.va = &args;
>  
>  	errstr = btrfs_decode_error(fs_info, errno, nbuf);
> -	if (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR)
> +	if (fs_info && (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR))
>  		panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (%s)\n",
>  			s_id, function, line, &vaf, errstr);
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Wang Sheng-Hui Dec. 8, 2012, 3:08 p.m. UTC | #2
On 2012?12?08? 18:10, Li Zefan wrote:
> On 2012/12/7 23:42, Wang Sheng-Hui wrote:
>> We should make sure fs_info is not null before we refer to its field.
>> Add simple check here.
> Why? Is there any caller passing NULL @fs_info to this function?

At least for code clean now.

In __btrfs_panic, we have:
276 if (fs_info)
277 s_id = fs_info->sb->s_id;
So for the ->mount_opt field access, we'd better do the check first.

>> Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
>> ---
>>  fs/btrfs/super.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
>> index 915ac14..c6a3633 100644
>> --- a/fs/btrfs/super.c
>> +++ b/fs/btrfs/super.c
>> @@ -280,7 +280,7 @@ void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
>>  	vaf.va = &args;
>>  
>>  	errstr = btrfs_decode_error(fs_info, errno, nbuf);
>> -	if (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR)
>> +	if (fs_info && (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR))
>>  		panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (%s)\n",
>>  			s_id, function, line, &vaf, errstr);
>>  
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 915ac14..c6a3633 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -280,7 +280,7 @@  void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
 	vaf.va = &args;
 
 	errstr = btrfs_decode_error(fs_info, errno, nbuf);
-	if (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR)
+	if (fs_info && (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR))
 		panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (%s)\n",
 			s_id, function, line, &vaf, errstr);