filter: constify sk_run_filter()
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 6 Dec 2010 20:50:09 +0000 (20:50 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Dec 2010 18:30:34 +0000 (10:30 -0800)
sk_run_filter() doesnt write on skb, change its prototype to reflect
this.

Fix two af_packet comments.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/filter.h
net/core/filter.c
net/core/timestamping.c
net/packet/af_packet.c

index 5334ada..45266b7 100644 (file)
@@ -148,7 +148,7 @@ struct sk_buff;
 struct sock;
 
 extern int sk_filter(struct sock *sk, struct sk_buff *skb);
-extern unsigned int sk_run_filter(struct sk_buff *skb,
+extern unsigned int sk_run_filter(const struct sk_buff *skb,
                                  const struct sock_filter *filter);
 extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
 extern int sk_detach_filter(struct sock *sk);
index ac4920a..25500f1 100644 (file)
@@ -88,7 +88,7 @@ enum {
 };
 
 /* No hurry in this branch */
-static void *__load_pointer(struct sk_buff *skb, int k)
+static void *__load_pointer(const struct sk_buff *skb, int k)
 {
        u8 *ptr = NULL;
 
@@ -102,7 +102,7 @@ static void *__load_pointer(struct sk_buff *skb, int k)
        return NULL;
 }
 
-static inline void *load_pointer(struct sk_buff *skb, int k,
+static inline void *load_pointer(const struct sk_buff *skb, int k,
                                 unsigned int size, void *buffer)
 {
        if (k >= 0)
@@ -160,7 +160,8 @@ EXPORT_SYMBOL(sk_filter);
  * and last instruction guaranteed to be a RET, we dont need to check
  * flen. (We used to pass to this function the length of filter)
  */
-unsigned int sk_run_filter(struct sk_buff *skb, const struct sock_filter *fentry)
+unsigned int sk_run_filter(const struct sk_buff *skb,
+                          const struct sock_filter *fentry)
 {
        void *ptr;
        u32 A = 0;                      /* Accumulator */
index dac7ed6..b124d28 100644 (file)
@@ -26,7 +26,7 @@ static struct sock_filter ptp_filter[] = {
        PTP_FILTER
 };
 
-static unsigned int classify(struct sk_buff *skb)
+static unsigned int classify(const struct sk_buff *skb)
 {
        if (likely(skb->dev &&
                   skb->dev->phydev &&
index a11c731..17eafe5 100644 (file)
@@ -517,7 +517,8 @@ out_free:
        return err;
 }
 
-static inline unsigned int run_filter(struct sk_buff *skb, struct sock *sk,
+static inline unsigned int run_filter(const struct sk_buff *skb,
+                                     const struct sock *sk,
                                      unsigned int res)
 {
        struct sk_filter *filter;
@@ -532,15 +533,15 @@ static inline unsigned int run_filter(struct sk_buff *skb, struct sock *sk,
 }
 
 /*
  This function makes lazy skb cloning in hope that most of packets
  are discarded by BPF.
-
  Note tricky part: we DO mangle shared skb! skb->data, skb->len
  and skb->cb are mangled. It works because (and until) packets
  falling here are owned by current CPU. Output packets are cloned
  by dev_queue_xmit_nit(), input packets are processed by net_bh
  sequencially, so that if we return skb to original state on exit,
  we will not harm anyone.
* This function makes lazy skb cloning in hope that most of packets
* are discarded by BPF.
+ *
* Note tricky part: we DO mangle shared skb! skb->data, skb->len
* and skb->cb are mangled. It works because (and until) packets
* falling here are owned by current CPU. Output packets are cloned
* by dev_queue_xmit_nit(), input packets are processed by net_bh
* sequencially, so that if we return skb to original state on exit,
* we will not harm anyone.
  */
 
 static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
@@ -566,11 +567,11 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
 
        if (dev->header_ops) {
                /* The device has an explicit notion of ll header,
-                  exported to higher levels.
-
-                  Otherwise, the device hides datails of it frame
-                  structure, so that corresponding packet head
-                  never delivered to user.
+                * exported to higher levels.
+                *
+                * Otherwise, the device hides details of its frame
+                * structure, so that corresponding packet head is
+                * never delivered to user.
                 */
                if (sk->sk_type != SOCK_DGRAM)
                        skb_push(skb, skb->data - skb_mac_header(skb));