]> err.no Git - linux-2.6/blobdiff - net/core/filter.c
[PATCH] sunrpc: cache_register can use wrong module reference
[linux-2.6] / net / core / filter.c
index 3923428a840fa2b845e687612003a1fcf52e5c6d..079c2edff789e95ccc9fbcec96184c2eb2772e84 100644 (file)
@@ -76,10 +76,6 @@ static inline void *load_pointer(struct sk_buff *skb, int k,
  
 int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
 {
-       /* len is UNSIGNED. Byte wide insns relies only on implicit
-          type casts to prevent reading arbitrary memory locations.
-        */
-       unsigned int len = skb->len-skb->data_len;
        struct sock_filter *fentry;     /* We walk down these */
        void *ptr;
        u32 A = 0;                      /* Accumulator */
@@ -186,7 +182,7 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
                                A = ntohl(*(u32 *)ptr);
                                continue;
                        }
-                       return 0;
+                       break;
                case BPF_LD|BPF_H|BPF_ABS:
                        k = fentry->k;
  load_h:
@@ -195,7 +191,7 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
                                A = ntohs(*(u16 *)ptr);
                                continue;
                        }
-                       return 0;
+                       break;
                case BPF_LD|BPF_B|BPF_ABS:
                        k = fentry->k;
 load_b:
@@ -204,12 +200,12 @@ load_b:
                                A = *(u8 *)ptr;
                                continue;
                        }
-                       return 0;
+                       break;
                case BPF_LD|BPF_W|BPF_LEN:
-                       A = len;
+                       A = skb->len;
                        continue;
                case BPF_LDX|BPF_W|BPF_LEN:
-                       X = len;
+                       X = skb->len;
                        continue;
                case BPF_LD|BPF_W|BPF_IND:
                        k = X + fentry->k;