Patchwork atl1c: add missing parentheses

login
register
mail settings
Submitter roel kluin
Date July 12, 2009, 9:40 p.m.
Message ID <4A5A5852.4010901@gmail.com>
Download mbox | patch
Permalink /patch/29713/
State Accepted
Delegated to: David Miller
Headers show

Comments

roel kluin - July 12, 2009, 9:40 p.m.
Parentheses are required or the comparison occurs before the bitand.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
#include <stdio.h>
int main()
{
        printf("0 & 1 == 0: %u\n", 0 & 1 == 0);
        printf("1 & 1 == 0: %u\n", 1 & 1 == 0);
        printf("(0 & 1) == 0: %u\n", (0 & 1) == 0);
        printf("(1 & 1) == 0: %u\n", (1 & 1) == 0);
        return 0;
}

output:
0 & 1 == 0: 0
1 & 1 == 0: 0
(0 & 1) == 0: 1
(1 & 1) == 0: 0

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - July 12, 2009, 9:40 p.m.
From: Roel Kluin <roel.kluin@gmail.com>
Date: Sun, 12 Jul 2009 23:40:34 +0200

> Parentheses are required or the comparison occurs before the bitand.
> 
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>

Scary... can someone test this before I apply it please?

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
J. K. Cliburn - July 13, 2009, 12:08 a.m.
Adding Jie (Atheros maintainer) to cc list.

On Sun, Jul 12, 2009 at 4:40 PM, Roel Kluin<roel.kluin@gmail.com> wrote:
> Parentheses are required or the comparison occurs before the bitand.
>
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> ---
> #include <stdio.h>
> int main()
> {
>        printf("0 & 1 == 0: %u\n", 0 & 1 == 0);
>        printf("1 & 1 == 0: %u\n", 1 & 1 == 0);
>        printf("(0 & 1) == 0: %u\n", (0 & 1) == 0);
>        printf("(1 & 1) == 0: %u\n", (1 & 1) == 0);
>        return 0;
> }
>
> output:
> 0 & 1 == 0: 0
> 1 & 1 == 0: 0
> (0 & 1) == 0: 1
> (1 & 1) == 0: 0
>
> diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
> index e1658ef..2a1120a 100644
> --- a/drivers/net/atl1c/atl1c.h
> +++ b/drivers/net/atl1c/atl1c.h
> @@ -188,14 +188,14 @@ struct atl1c_tpd_ext_desc {
>  #define RRS_HDS_TYPE_DATA      2
>
>  #define RRS_IS_NO_HDS_TYPE(flag) \
> -       (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0)
> +       ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == 0)
>
>  #define RRS_IS_HDS_HEAD(flag) \
> -       (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
> +       ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
>                        RRS_HDS_TYPE_HEAD)
>
>  #define RRS_IS_HDS_DATA(flag) \
> -       (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
> +       ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
>                        RRS_HDS_TYPE_DATA)
>
>  /* rrs word 3 bit 0:31 */
> @@ -245,7 +245,7 @@ struct atl1c_tpd_ext_desc {
>  #define RRS_PACKET_TYPE_802_3          1
>  #define RRS_PACKET_TYPE_ETH    0
>  #define RRS_PACKET_IS_ETH(word) \
> -       (((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \
> +       ((((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK) == \
>                        RRS_PACKET_TYPE_ETH)
>  #define RRS_RXD_IS_VALID(word) \
>        ((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - July 17, 2009, 1:08 a.m.
From: Roel Kluin <roel.kluin@gmail.com>
Date: Sun, 12 Jul 2009 23:40:34 +0200

> Parentheses are required or the comparison occurs before the bitand.
> 
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>

I'm sick and tired of waiting for someone to test this and it's so
damn obvious, so, applied.  Thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
index e1658ef..2a1120a 100644
--- a/drivers/net/atl1c/atl1c.h
+++ b/drivers/net/atl1c/atl1c.h
@@ -188,14 +188,14 @@  struct atl1c_tpd_ext_desc {
 #define RRS_HDS_TYPE_DATA	2
 
 #define RRS_IS_NO_HDS_TYPE(flag) \
-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0)
+	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == 0)
 
 #define RRS_IS_HDS_HEAD(flag) \
-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
+	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
 			RRS_HDS_TYPE_HEAD)
 
 #define RRS_IS_HDS_DATA(flag) \
-	(((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
+	((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
 			RRS_HDS_TYPE_DATA)
 
 /* rrs word 3 bit 0:31 */
@@ -245,7 +245,7 @@  struct atl1c_tpd_ext_desc {
 #define RRS_PACKET_TYPE_802_3  	1
 #define RRS_PACKET_TYPE_ETH	0
 #define RRS_PACKET_IS_ETH(word) \
-	(((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \
+	((((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK) == \
 			RRS_PACKET_TYPE_ETH)
 #define RRS_RXD_IS_VALID(word) \
 	((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)