2011-05-14 13:43:21

by Maxin B. John

[permalink] [raw]
Subject: [PATCH] net: ipv6: mcast: Removing invalid check

Since the variable 'first' is assigned to 1, the check
"if (truncate && !first)" will always be false.

Thanks to Coverity for spotting this issue.

Signed-off-by: Maxin B. John <[email protected]>
---
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 76b8937..441c1a4 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -1536,8 +1536,6 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc,

if (AVAILABLE(skb) < sizeof(*psrc) +
first*sizeof(struct mld2_grec)) {
- if (truncate && !first)
- break; /* truncate these */
if (pgr)
pgr->grec_nsrcs = htons(scount);
if (skb)


2011-05-14 14:17:06

by Nicolas Kaiser

[permalink] [raw]
Subject: Re: [PATCH] net: ipv6: mcast: Removing invalid check

* Maxin B John <[email protected]>:
> Since the variable 'first' is assigned to 1, the check
> "if (truncate && !first)" will always be false.
>
> Thanks to Coverity for spotting this issue.
>
> Signed-off-by: Maxin B. John <[email protected]>
> ---

I don't see that. We are within a 'for' loop, and some lines
below you will find an assignment of 'first = 0;'.

Best regards,
Nicolas Kaiser

> diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
> index 76b8937..441c1a4 100644
> --- a/net/ipv6/mcast.c
> +++ b/net/ipv6/mcast.c
> @@ -1536,8 +1536,6 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc,
>
> if (AVAILABLE(skb) < sizeof(*psrc) +
> first*sizeof(struct mld2_grec)) {
> - if (truncate && !first)
> - break; /* truncate these */
> if (pgr)
> pgr->grec_nsrcs = htons(scount);
> if (skb)

2011-05-14 14:32:48

by Maxin B. John

[permalink] [raw]
Subject: Re: [PATCH] net: ipv6: mcast: Removing invalid check

Ahhh.. Another bogus report from Coverity.

>
> I don't see that. We are within a 'for' loop, and some lines
> below you will find an assignment of 'first = 0;'.
>

Thanks a lot for pointing it out.

Best Regards,
Maxin B John

2011-05-14 14:33:40

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH] net: ipv6: mcast: Removing invalid check

Le samedi 14 mai 2011 à 16:43 +0300, Maxin B John a écrit :
> Since the variable 'first' is assigned to 1, the check
> "if (truncate && !first)" will always be false.
>
> Thanks to Coverity for spotting this issue.
>
> Signed-off-by: Maxin B. John <[email protected]>
> ---
> diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
> index 76b8937..441c1a4 100644
> --- a/net/ipv6/mcast.c
> +++ b/net/ipv6/mcast.c
> @@ -1536,8 +1536,6 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc,
>
> if (AVAILABLE(skb) < sizeof(*psrc) +
> first*sizeof(struct mld2_grec)) {
> - if (truncate && !first)
> - break; /* truncate these */
> if (pgr)
> pgr->grec_nsrcs = htons(scount);
> if (skb)

At a first glance, I would say Coverity is wrong, unless you can explain
why it's right ;)

first can be 0 at this point, we are in a loop.

BTW "Removing invalid check" is a really wrong patch title.

Once you can prove your point, you should use "Remove useless check"

Thanks

2011-05-14 14:45:42

by Maxin B. John

[permalink] [raw]
Subject: Re: [PATCH] net: ipv6: mcast: Removing invalid check

Hi,

> At a first glance, I would say Coverity is wrong, unless you can explain
> why it's right ;)
>
> first can be 0 at this point, we are in a loop.

You are right.

> BTW "Removing invalid check" is a really wrong patch title.
>
> Once you can prove your point, you should use "Remove useless check"
>

I will keep it in mind. Thanks .

Best Regards,
Maxin B John