ocfs2: change slot number type s16 to u16
diff mbox series

Message ID 20200627001259.19757-1-junxiao.bi@oracle.com
State New
Headers show
Series
  • ocfs2: change slot number type s16 to u16
Related show

Commit Message

Junxiao Bi June 27, 2020, 12:12 a.m. UTC
Dan Carpenter reported the following static checker warning.

	fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
	fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
	fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'

That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
never negative, so change s16 to u16.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
---
 fs/ocfs2/ocfs2.h    | 4 ++--
 fs/ocfs2/suballoc.c | 4 ++--
 fs/ocfs2/super.c    | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

Comments

Joseph Qi June 29, 2020, 1:47 a.m. UTC | #1
On 2020/6/27 08:12, Junxiao Bi wrote:
> Dan Carpenter reported the following static checker warning.
> 
> 	fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
> 	fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
> 	fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
> 
> That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
> never negative, so change s16 to u16.
> 
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>

Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
> ---
>  fs/ocfs2/ocfs2.h    | 4 ++--
>  fs/ocfs2/suballoc.c | 4 ++--
>  fs/ocfs2/super.c    | 4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
> index 2dd71d626196..7993d527edae 100644
> --- a/fs/ocfs2/ocfs2.h
> +++ b/fs/ocfs2/ocfs2.h
> @@ -327,8 +327,8 @@ struct ocfs2_super
>  	spinlock_t osb_lock;
>  	u32 s_next_generation;
>  	unsigned long osb_flags;
> -	s16 s_inode_steal_slot;
> -	s16 s_meta_steal_slot;
> +	u16 s_inode_steal_slot;
> +	u16 s_meta_steal_slot;
>  	atomic_t s_num_inodes_stolen;
>  	atomic_t s_num_meta_stolen;
>  
> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
> index 45745cc3408a..8c8cf7f4eb34 100644
> --- a/fs/ocfs2/suballoc.c
> +++ b/fs/ocfs2/suballoc.c
> @@ -879,9 +879,9 @@ static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type)
>  {
>  	spin_lock(&osb->osb_lock);
>  	if (type == INODE_ALLOC_SYSTEM_INODE)
> -		osb->s_inode_steal_slot = slot;
> +		osb->s_inode_steal_slot = (u16)slot;
>  	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
> -		osb->s_meta_steal_slot = slot;
> +		osb->s_meta_steal_slot = (u16)slot;
>  	spin_unlock(&osb->osb_lock);
>  }
>  
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index 71ea9ce71a6b..1d91dd1e8711 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -78,7 +78,7 @@ struct mount_options
>  	unsigned long	commit_interval;
>  	unsigned long	mount_opt;
>  	unsigned int	atime_quantum;
> -	signed short	slot;
> +	unsigned short	slot;
>  	int		localalloc_opt;
>  	unsigned int	resv_level;
>  	int		dir_resv_level;
> @@ -1349,7 +1349,7 @@ static int ocfs2_parse_options(struct super_block *sb,
>  				goto bail;
>  			}
>  			if (option)
> -				mopt->slot = (s16)option;
> +				mopt->slot = (u16)option;
>  			break;
>  		case Opt_commit:
>  			if (match_int(&args[0], &option)) {
>
Gang He July 3, 2020, 8:45 a.m. UTC | #2
On 6/27/2020 8:12 AM, Junxiao Bi wrote:
> Dan Carpenter reported the following static checker warning.
> 
> 	fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
> 	fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
> 	fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
> 
> That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
> never negative, so change s16 to u16.
> 
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>

Reviewed-by: Gang He <ghe@suse.com>
Fixes: 9277f8334ffc ("ocfs2: fix value of OCFS2_INVALID_SLOT")

> ---
>   fs/ocfs2/ocfs2.h    | 4 ++--
>   fs/ocfs2/suballoc.c | 4 ++--
>   fs/ocfs2/super.c    | 4 ++--
>   3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
> index 2dd71d626196..7993d527edae 100644
> --- a/fs/ocfs2/ocfs2.h
> +++ b/fs/ocfs2/ocfs2.h
> @@ -327,8 +327,8 @@ struct ocfs2_super
>   	spinlock_t osb_lock;
>   	u32 s_next_generation;
>   	unsigned long osb_flags;
> -	s16 s_inode_steal_slot;
> -	s16 s_meta_steal_slot;
> +	u16 s_inode_steal_slot;
> +	u16 s_meta_steal_slot;
>   	atomic_t s_num_inodes_stolen;
>   	atomic_t s_num_meta_stolen;
>   
> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
> index 45745cc3408a..8c8cf7f4eb34 100644
> --- a/fs/ocfs2/suballoc.c
> +++ b/fs/ocfs2/suballoc.c
> @@ -879,9 +879,9 @@ static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type)
>   {
>   	spin_lock(&osb->osb_lock);
>   	if (type == INODE_ALLOC_SYSTEM_INODE)
> -		osb->s_inode_steal_slot = slot;
> +		osb->s_inode_steal_slot = (u16)slot;
>   	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
> -		osb->s_meta_steal_slot = slot;
> +		osb->s_meta_steal_slot = (u16)slot;
>   	spin_unlock(&osb->osb_lock);
>   }
>   
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index 71ea9ce71a6b..1d91dd1e8711 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -78,7 +78,7 @@ struct mount_options
>   	unsigned long	commit_interval;
>   	unsigned long	mount_opt;
>   	unsigned int	atime_quantum;
> -	signed short	slot;
> +	unsigned short	slot;
>   	int		localalloc_opt;
>   	unsigned int	resv_level;
>   	int		dir_resv_level;
> @@ -1349,7 +1349,7 @@ static int ocfs2_parse_options(struct super_block *sb,
>   				goto bail;
>   			}
>   			if (option)
> -				mopt->slot = (s16)option;
> +				mopt->slot = (u16)option;
>   			break;
>   		case Opt_commit:
>   			if (match_int(&args[0], &option)) {
>
Joseph Qi July 3, 2020, 12:11 p.m. UTC | #3
On 2020/7/3 16:45, Gang He wrote:
> 
> 
> On 6/27/2020 8:12 AM, Junxiao Bi wrote:
>> Dan Carpenter reported the following static checker warning.
>>
>> 	fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
>> 	fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
>> 	fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
>>
>> That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
>> never negative, so change s16 to u16.
>>
>> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> 
> Reviewed-by: Gang He <ghe@suse.com>
> Fixes: 9277f8334ffc ("ocfs2: fix value of OCFS2_INVALID_SLOT")
> 

Add Cc tag as well.
Cc: <stable@vger.kernel.org>

>> ---
>>   fs/ocfs2/ocfs2.h    | 4 ++--
>>   fs/ocfs2/suballoc.c | 4 ++--
>>   fs/ocfs2/super.c    | 4 ++--
>>   3 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
>> index 2dd71d626196..7993d527edae 100644
>> --- a/fs/ocfs2/ocfs2.h
>> +++ b/fs/ocfs2/ocfs2.h
>> @@ -327,8 +327,8 @@ struct ocfs2_super
>>   	spinlock_t osb_lock;
>>   	u32 s_next_generation;
>>   	unsigned long osb_flags;
>> -	s16 s_inode_steal_slot;
>> -	s16 s_meta_steal_slot;
>> +	u16 s_inode_steal_slot;
>> +	u16 s_meta_steal_slot;
>>   	atomic_t s_num_inodes_stolen;
>>   	atomic_t s_num_meta_stolen;
>>   
>> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
>> index 45745cc3408a..8c8cf7f4eb34 100644
>> --- a/fs/ocfs2/suballoc.c
>> +++ b/fs/ocfs2/suballoc.c
>> @@ -879,9 +879,9 @@ static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type)
>>   {
>>   	spin_lock(&osb->osb_lock);
>>   	if (type == INODE_ALLOC_SYSTEM_INODE)
>> -		osb->s_inode_steal_slot = slot;
>> +		osb->s_inode_steal_slot = (u16)slot;
>>   	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
>> -		osb->s_meta_steal_slot = slot;
>> +		osb->s_meta_steal_slot = (u16)slot;
>>   	spin_unlock(&osb->osb_lock);
>>   }
>>   
>> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
>> index 71ea9ce71a6b..1d91dd1e8711 100644
>> --- a/fs/ocfs2/super.c
>> +++ b/fs/ocfs2/super.c
>> @@ -78,7 +78,7 @@ struct mount_options
>>   	unsigned long	commit_interval;
>>   	unsigned long	mount_opt;
>>   	unsigned int	atime_quantum;
>> -	signed short	slot;
>> +	unsigned short	slot;
>>   	int		localalloc_opt;
>>   	unsigned int	resv_level;
>>   	int		dir_resv_level;
>> @@ -1349,7 +1349,7 @@ static int ocfs2_parse_options(struct super_block *sb,
>>   				goto bail;
>>   			}
>>   			if (option)
>> -				mopt->slot = (s16)option;
>> +				mopt->slot = (u16)option;
>>   			break;
>>   		case Opt_commit:
>>   			if (match_int(&args[0], &option)) {
>>
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel@oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
Gang He Aug. 3, 2020, 6:43 a.m. UTC | #4
Hello Andrew,

Could you help to commit this patch to Linus git tree? since this patch 
will fix the latest patch (ocfs2: fix value of OCFS2_INVALID_SLOT).
So far, the current ocfs2 code under Linus git tree does NOT work.


Thanks
Gang

On 7/3/2020 8:11 PM, Joseph Qi wrote:
> 
> 
> On 2020/7/3 16:45, Gang He wrote:
>>
>>
>> On 6/27/2020 8:12 AM, Junxiao Bi wrote:
>>> Dan Carpenter reported the following static checker warning.
>>>
>>> 	fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
>>> 	fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
>>> 	fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
>>>
>>> That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be
>>> never negative, so change s16 to u16.
>>>
>>> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
>>
>> Reviewed-by: Gang He <ghe@suse.com>
>> Fixes: 9277f8334ffc ("ocfs2: fix value of OCFS2_INVALID_SLOT")
>>
> 
> Add Cc tag as well.
> Cc: <stable@vger.kernel.org>
> 
>>> ---
>>>    fs/ocfs2/ocfs2.h    | 4 ++--
>>>    fs/ocfs2/suballoc.c | 4 ++--
>>>    fs/ocfs2/super.c    | 4 ++--
>>>    3 files changed, 6 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
>>> index 2dd71d626196..7993d527edae 100644
>>> --- a/fs/ocfs2/ocfs2.h
>>> +++ b/fs/ocfs2/ocfs2.h
>>> @@ -327,8 +327,8 @@ struct ocfs2_super
>>>    	spinlock_t osb_lock;
>>>    	u32 s_next_generation;
>>>    	unsigned long osb_flags;
>>> -	s16 s_inode_steal_slot;
>>> -	s16 s_meta_steal_slot;
>>> +	u16 s_inode_steal_slot;
>>> +	u16 s_meta_steal_slot;
>>>    	atomic_t s_num_inodes_stolen;
>>>    	atomic_t s_num_meta_stolen;
>>>    
>>> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
>>> index 45745cc3408a..8c8cf7f4eb34 100644
>>> --- a/fs/ocfs2/suballoc.c
>>> +++ b/fs/ocfs2/suballoc.c
>>> @@ -879,9 +879,9 @@ static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type)
>>>    {
>>>    	spin_lock(&osb->osb_lock);
>>>    	if (type == INODE_ALLOC_SYSTEM_INODE)
>>> -		osb->s_inode_steal_slot = slot;
>>> +		osb->s_inode_steal_slot = (u16)slot;
>>>    	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
>>> -		osb->s_meta_steal_slot = slot;
>>> +		osb->s_meta_steal_slot = (u16)slot;
>>>    	spin_unlock(&osb->osb_lock);
>>>    }
>>>    
>>> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
>>> index 71ea9ce71a6b..1d91dd1e8711 100644
>>> --- a/fs/ocfs2/super.c
>>> +++ b/fs/ocfs2/super.c
>>> @@ -78,7 +78,7 @@ struct mount_options
>>>    	unsigned long	commit_interval;
>>>    	unsigned long	mount_opt;
>>>    	unsigned int	atime_quantum;
>>> -	signed short	slot;
>>> +	unsigned short	slot;
>>>    	int		localalloc_opt;
>>>    	unsigned int	resv_level;
>>>    	int		dir_resv_level;
>>> @@ -1349,7 +1349,7 @@ static int ocfs2_parse_options(struct super_block *sb,
>>>    				goto bail;
>>>    			}
>>>    			if (option)
>>> -				mopt->slot = (s16)option;
>>> +				mopt->slot = (u16)option;
>>>    			break;
>>>    		case Opt_commit:
>>>    			if (match_int(&args[0], &option)) {
>>>
>>
>>
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel@oss.oracle.com
>> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>>
>
Andrew Morton Aug. 4, 2020, 12:45 a.m. UTC | #5
On Mon, 3 Aug 2020 14:43:23 +0800 Gang He <ghe@suse.com> wrote:

> Could you help to commit this patch to Linus git tree? since this patch 
> will fix the latest patch (ocfs2: fix value of OCFS2_INVALID_SLOT).
> So far, the current ocfs2 code under Linus git tree does NOT work.

It's in the queue for 5.9-rc1, with a cc:stable.

Patch
diff mbox series

diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index 2dd71d626196..7993d527edae 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -327,8 +327,8 @@  struct ocfs2_super
 	spinlock_t osb_lock;
 	u32 s_next_generation;
 	unsigned long osb_flags;
-	s16 s_inode_steal_slot;
-	s16 s_meta_steal_slot;
+	u16 s_inode_steal_slot;
+	u16 s_meta_steal_slot;
 	atomic_t s_num_inodes_stolen;
 	atomic_t s_num_meta_stolen;
 
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
index 45745cc3408a..8c8cf7f4eb34 100644
--- a/fs/ocfs2/suballoc.c
+++ b/fs/ocfs2/suballoc.c
@@ -879,9 +879,9 @@  static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type)
 {
 	spin_lock(&osb->osb_lock);
 	if (type == INODE_ALLOC_SYSTEM_INODE)
-		osb->s_inode_steal_slot = slot;
+		osb->s_inode_steal_slot = (u16)slot;
 	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
-		osb->s_meta_steal_slot = slot;
+		osb->s_meta_steal_slot = (u16)slot;
 	spin_unlock(&osb->osb_lock);
 }
 
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 71ea9ce71a6b..1d91dd1e8711 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -78,7 +78,7 @@  struct mount_options
 	unsigned long	commit_interval;
 	unsigned long	mount_opt;
 	unsigned int	atime_quantum;
-	signed short	slot;
+	unsigned short	slot;
 	int		localalloc_opt;
 	unsigned int	resv_level;
 	int		dir_resv_level;
@@ -1349,7 +1349,7 @@  static int ocfs2_parse_options(struct super_block *sb,
 				goto bail;
 			}
 			if (option)
-				mopt->slot = (s16)option;
+				mopt->slot = (u16)option;
 			break;
 		case Opt_commit:
 			if (match_int(&args[0], &option)) {