netdev
[Top] [All Lists]

Re: [PATCH] tiny af_packet.c cleanup

To: Mitchell Blank Jr <mitch@xxxxxxxxxx>
Subject: Re: [PATCH] tiny af_packet.c cleanup
From: Francois Romieu <romieu@xxxxxxxxxxxxx>
Date: Sat, 13 Sep 2003 09:35:59 +0200
Cc: "David S. Miller" <davem@xxxxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <20030913055033.GB94744@xxxxxxxxxxxxxx>; from mitch@xxxxxxxxxx on Fri, Sep 12, 2003 at 10:50:33PM -0700
References: <20030913055033.GB94744@xxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.2.5.1i
Mitchell Blank Jr <mitch@xxxxxxxxxx> :
[...]
> --- linux-2.6.0-test5-VIRGIN/net/packet/af_packet.c   2003-09-08 
> 12:39:53.000000000 -0700
> +++ linux-2.6.0-test5mnb1/net/packet/af_packet.c      2003-09-12 
> 13:28:53.857179768 -0700
> @@ -433,9 +433,9 @@
>               struct sk_filter *filter;
>  
>               bh_lock_sock(sk);
> -             if ((filter = sk->sk_filter) != NULL)
> -                     res = sk_run_filter(skb, sk->sk_filter->insns,
> -                                         sk->sk_filter->len);
> +             filter = sk->sk_filter;
> +             if (likely(filter != NULL))     /* re-check under lock */
> +                     res = sk_run_filter(skb, filter->insns, filter->len);

1 - pointers tests against NULL are naturally supposed "unlikely" by gcc.
2 - I am not completely convinced that the "/* re-check under lock */" 
    comment is really useful either: the lock statement is on the line before.

Make it more spartan:

--- linux-2.6.0-test5-VIRGIN/net/packet/af_packet.c     2003-09-08 
12:39:53.000000000 -0700
+++ linux-2.6.0-test5mnb1/net/packet/af_packet.c        2003-09-12 
13:28:53.857179768 -0700
@@ -433,9 +433,9 @@
                struct sk_filter *filter;
 
                bh_lock_sock(sk);
-               if ((filter = sk->sk_filter) != NULL)
-                       res = sk_run_filter(skb, sk->sk_filter->insns,
-                                           sk->sk_filter->len);
+               filter = sk->sk_filter;
+               if (filter)
+                       res = sk_run_filter(skb, filter->insns, filter->len);
                bh_unlock_sock(sk);
 
                if (res == 0)
@@ -537,9 +537,9 @@
                struct sk_filter *filter;
 
                bh_lock_sock(sk);
-               if ((filter = sk->sk_filter) != NULL)
-                       res = sk_run_filter(skb, sk->sk_filter->insns,
-                                           sk->sk_filter->len);
+               filter = sk->sk_filter;
+               if (filter)
+                       res = sk_run_filter(skb, filter->insns, filter->len);
                bh_unlock_sock(sk);
 
                if (res == 0)


<Prev in Thread] Current Thread [Next in Thread>