diff mbox series

[mtd-next] mtd: nand: remove redundant check of len

Message ID 20171213201743.27324-1-colin.king@canonical.com
State Rejected
Delegated to: Boris Brezillon
Headers show
Series [mtd-next] mtd: nand: remove redundant check of len | expand

Commit Message

Colin Ian King Dec. 13, 2017, 8:17 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

The check of len being zero is redundant as it has already been
sanity checked for this value at the start of the function. Hence
it is impossible for this test to be true and so the redundant
code can be removed.

Detected by CoverityScan, CID#1462748 ("Logically dead code")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/mtd/nand/nand_base.c | 4 ----
 1 file changed, 4 deletions(-)

Comments

Boris Brezillon Dec. 13, 2017, 8:24 p.m. UTC | #1
On Wed, 13 Dec 2017 20:17:43 +0000
Colin King <colin.king@canonical.com> wrote:

> From: Colin Ian King <colin.king@canonical.com>
> 
> The check of len being zero is redundant as it has already been
> sanity checked for this value at the start of the function. Hence
> it is impossible for this test to be true and so the redundant
> code can be removed.

Nope, it's not the same test, the initial test is

	if (len && !buf)

not

	if (len)

So this test is not redundant.

> 
> Detected by CoverityScan, CID#1462748 ("Logically dead code")
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  drivers/mtd/nand/nand_base.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index afd5e18db81c..9daaa23db943 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -1507,10 +1507,6 @@ static int nand_read_param_page_op(struct nand_chip *chip, u8 page, void *buf,
>  		};
>  		struct nand_operation op = NAND_OPERATION(instrs);
>  
> -		/* Drop the DATA_IN instruction if len is set to 0. */
> -		if (!len)
> -			op.ninstrs--;
> -
>  		return nand_exec_op(chip, &op);
>  	}
>
Colin Ian King Dec. 13, 2017, 8:30 p.m. UTC | #2
On 13/12/17 20:24, Boris Brezillon wrote:
> On Wed, 13 Dec 2017 20:17:43 +0000
> Colin King <colin.king@canonical.com> wrote:
> 
>> From: Colin Ian King <colin.king@canonical.com>
>>
>> The check of len being zero is redundant as it has already been
>> sanity checked for this value at the start of the function. Hence
>> it is impossible for this test to be true and so the redundant
>> code can be removed.
> 
> Nope, it's not the same test, the initial test is
> 
> 	if (len && !buf)

Ah, the current tip from linux-next has:

1912        if (!len || !buf)
1913                return -EINVAL;

..so I guess that's why it got picked up by static analysis.

> 
> not
> 
> 	if (len)
> 
> So this test is not redundant.
> 
>>
>> Detected by CoverityScan, CID#1462748 ("Logically dead code")
>>
>> Signed-off-by: Colin Ian King <colin.king@canonical.com>
>> ---
>>  drivers/mtd/nand/nand_base.c | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
>> index afd5e18db81c..9daaa23db943 100644
>> --- a/drivers/mtd/nand/nand_base.c
>> +++ b/drivers/mtd/nand/nand_base.c
>> @@ -1507,10 +1507,6 @@ static int nand_read_param_page_op(struct nand_chip *chip, u8 page, void *buf,
>>  		};
>>  		struct nand_operation op = NAND_OPERATION(instrs);
>>  
>> -		/* Drop the DATA_IN instruction if len is set to 0. */
>> -		if (!len)
>> -			op.ninstrs--;
>> -
>>  		return nand_exec_op(chip, &op);
>>  	}
>>  
>
Boris Brezillon Dec. 13, 2017, 8:38 p.m. UTC | #3
On Wed, 13 Dec 2017 20:30:04 +0000
Colin Ian King <colin.king@canonical.com> wrote:

> On 13/12/17 20:24, Boris Brezillon wrote:
> > On Wed, 13 Dec 2017 20:17:43 +0000
> > Colin King <colin.king@canonical.com> wrote:
> >   
> >> From: Colin Ian King <colin.king@canonical.com>
> >>
> >> The check of len being zero is redundant as it has already been
> >> sanity checked for this value at the start of the function. Hence
> >> it is impossible for this test to be true and so the redundant
> >> code can be removed.  
> > 
> > Nope, it's not the same test, the initial test is
> > 
> > 	if (len && !buf)  
> 
> Ah, the current tip from linux-next has:
> 
> 1912        if (!len || !buf)
> 1913                return -EINVAL;
> 
> ..so I guess that's why it got picked up by static analysis.

Hm, that's weird, that's not what I see [1] in linux-next.

[1]https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/mtd/nand/nand_base.c#n1488

> 
> > 
> > not
> > 
> > 	if (len)
> > 
> > So this test is not redundant.
> >   
> >>
> >> Detected by CoverityScan, CID#1462748 ("Logically dead code")
> >>
> >> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> >> ---
> >>  drivers/mtd/nand/nand_base.c | 4 ----
> >>  1 file changed, 4 deletions(-)
> >>
> >> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> >> index afd5e18db81c..9daaa23db943 100644
> >> --- a/drivers/mtd/nand/nand_base.c
> >> +++ b/drivers/mtd/nand/nand_base.c
> >> @@ -1507,10 +1507,6 @@ static int nand_read_param_page_op(struct nand_chip *chip, u8 page, void *buf,
> >>  		};
> >>  		struct nand_operation op = NAND_OPERATION(instrs);
> >>  
> >> -		/* Drop the DATA_IN instruction if len is set to 0. */
> >> -		if (!len)
> >> -			op.ninstrs--;
> >> -
> >>  		return nand_exec_op(chip, &op);
> >>  	}
> >>    
> >   
>
Colin Ian King Dec. 13, 2017, 8:44 p.m. UTC | #4
On 13/12/17 20:38, Boris Brezillon wrote:
> On Wed, 13 Dec 2017 20:30:04 +0000
> Colin Ian King <colin.king@canonical.com> wrote:
> 
>> On 13/12/17 20:24, Boris Brezillon wrote:
>>> On Wed, 13 Dec 2017 20:17:43 +0000
>>> Colin King <colin.king@canonical.com> wrote:
>>>   
>>>> From: Colin Ian King <colin.king@canonical.com>
>>>>
>>>> The check of len being zero is redundant as it has already been
>>>> sanity checked for this value at the start of the function. Hence
>>>> it is impossible for this test to be true and so the redundant
>>>> code can be removed.  
>>>
>>> Nope, it's not the same test, the initial test is
>>>
>>> 	if (len && !buf)  
>>
>> Ah, the current tip from linux-next has:
>>
>> 1912        if (!len || !buf)
>> 1913                return -EINVAL;
>>
>> ..so I guess that's why it got picked up by static analysis.
> 
> Hm, that's weird, that's not what I see [1] in linux-next.

I see my mistake, I fixed the *wrong* function, I'll send a v2. Doh.
> 
> [1]https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/mtd/nand/nand_base.c#n1488
> 
>>
>>>
>>> not
>>>
>>> 	if (len)
>>>
>>> So this test is not redundant.
>>>   
>>>>
>>>> Detected by CoverityScan, CID#1462748 ("Logically dead code")
>>>>
>>>> Signed-off-by: Colin Ian King <colin.king@canonical.com>
>>>> ---
>>>>  drivers/mtd/nand/nand_base.c | 4 ----
>>>>  1 file changed, 4 deletions(-)
>>>>
>>>> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
>>>> index afd5e18db81c..9daaa23db943 100644
>>>> --- a/drivers/mtd/nand/nand_base.c
>>>> +++ b/drivers/mtd/nand/nand_base.c
>>>> @@ -1507,10 +1507,6 @@ static int nand_read_param_page_op(struct nand_chip *chip, u8 page, void *buf,
>>>>  		};
>>>>  		struct nand_operation op = NAND_OPERATION(instrs);
>>>>  
>>>> -		/* Drop the DATA_IN instruction if len is set to 0. */
>>>> -		if (!len)
>>>> -			op.ninstrs--;
>>>> -
>>>>  		return nand_exec_op(chip, &op);
>>>>  	}
>>>>    
>>>   
>>
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Boris Brezillon Dec. 13, 2017, 8:46 p.m. UTC | #5
On Wed, 13 Dec 2017 21:38:44 +0100
Boris Brezillon <boris.brezillon@free-electrons.com> wrote:

> On Wed, 13 Dec 2017 20:30:04 +0000
> Colin Ian King <colin.king@canonical.com> wrote:
> 
> > On 13/12/17 20:24, Boris Brezillon wrote:  
> > > On Wed, 13 Dec 2017 20:17:43 +0000
> > > Colin King <colin.king@canonical.com> wrote:
> > >     
> > >> From: Colin Ian King <colin.king@canonical.com>
> > >>
> > >> The check of len being zero is redundant as it has already been
> > >> sanity checked for this value at the start of the function. Hence
> > >> it is impossible for this test to be true and so the redundant
> > >> code can be removed.    
> > > 
> > > Nope, it's not the same test, the initial test is
> > > 
> > > 	if (len && !buf)    
> > 
> > Ah, the current tip from linux-next has:
> > 
> > 1912        if (!len || !buf)
> > 1913                return -EINVAL;
> > 
> > ..so I guess that's why it got picked up by static analysis.  
> 
> Hm, that's weird, that's not what I see [1] in linux-next.

This being said, the test in nand_readid_op() is wrong [1], so maybe
this was the thing you were trying to fix.

No need to send a new patch, I'll squash the fix in the commit
introducing the function.

Thanks,

Boris

[1]http://code.bulix.org/kxivhd-240572
Boris Brezillon Dec. 13, 2017, 8:47 p.m. UTC | #6
On Wed, 13 Dec 2017 20:44:45 +0000
Colin Ian King <colin.king@canonical.com> wrote:

> On 13/12/17 20:38, Boris Brezillon wrote:
> > On Wed, 13 Dec 2017 20:30:04 +0000
> > Colin Ian King <colin.king@canonical.com> wrote:
> >   
> >> On 13/12/17 20:24, Boris Brezillon wrote:  
> >>> On Wed, 13 Dec 2017 20:17:43 +0000
> >>> Colin King <colin.king@canonical.com> wrote:
> >>>     
> >>>> From: Colin Ian King <colin.king@canonical.com>
> >>>>
> >>>> The check of len being zero is redundant as it has already been
> >>>> sanity checked for this value at the start of the function. Hence
> >>>> it is impossible for this test to be true and so the redundant
> >>>> code can be removed.    
> >>>
> >>> Nope, it's not the same test, the initial test is
> >>>
> >>> 	if (len && !buf)    
> >>
> >> Ah, the current tip from linux-next has:
> >>
> >> 1912        if (!len || !buf)
> >> 1913                return -EINVAL;
> >>
> >> ..so I guess that's why it got picked up by static analysis.  
> > 
> > Hm, that's weird, that's not what I see [1] in linux-next.  
> 
> I see my mistake, I fixed the *wrong* function, I'll send a v2. Doh.

Yep, just noticed that too. No need to send a patch though.
diff mbox series

Patch

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index afd5e18db81c..9daaa23db943 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -1507,10 +1507,6 @@  static int nand_read_param_page_op(struct nand_chip *chip, u8 page, void *buf,
 		};
 		struct nand_operation op = NAND_OPERATION(instrs);
 
-		/* Drop the DATA_IN instruction if len is set to 0. */
-		if (!len)
-			op.ninstrs--;
-
 		return nand_exec_op(chip, &op);
 	}