From 3154e540e374bbfd62693d95bc8ed51da95efe75 Mon Sep 17 00:00:00 2001
From: Patrick McHardy <kaber@trash.net>
Date: Tue, 5 Jul 2005 14:10:40 -0700
Subject: [PATCH] [NET]: net/core/filter.c: make len cover the entire packet

As suggested by Herbert Xu:

Since we don't require anything to be in the linear packet range
anymore make len cover the entire packet.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/core/filter.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/net/core/filter.c b/net/core/filter.c
index 3923428a840f..cd91a24f9720 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -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 */
@@ -206,10 +202,10 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
 			}
 			return 0;
 		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;
-- 
GitLab