update brcm-2.4 to 2.4.35.4, integrate new broadcom system code, update broadcom-wl to a contributed version (v4.150.10.5) - no bcm57xx support yet, will follow shortly

SVN-Revision: 10137
This commit is contained in:
Felix Fietkau
2008-01-06 19:28:07 +00:00
parent 563d234596
commit 178721f76b
165 changed files with 20348 additions and 10073 deletions

View File

@@ -1,56 +1,8 @@
--- linux-2.4.32/drivers/net/tun.c 2006-10-28 18:21:45.000000000 +0100
+++ new.linux-2.4.32/drivers/net/tun.c 2006-10-28 18:50:53.000000000 +0100
@@ -185,22 +185,31 @@
{
struct tun_pi pi = { 0, __constant_htons(ETH_P_IP) };
struct sk_buff *skb;
- size_t len = count;
+ size_t len = count, align = 0;
if (!(tun->flags & TUN_NO_PI)) {
if ((len -= sizeof(pi)) > count)
return -EINVAL;
- memcpy_fromiovec((void *)&pi, iv, sizeof(pi));
+ if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi)))
+ return -EFAULT;
}
-
- if (!(skb = alloc_skb(len + 2, GFP_KERNEL))) {
+
+ if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV)
+ align = NET_IP_ALIGN;
+
+ if (!(skb = alloc_skb(len + align, GFP_KERNEL))) {
tun->stats.rx_dropped++;
return -ENOMEM;
}
- skb_reserve(skb, 2);
- memcpy_fromiovec(skb_put(skb, len), iv, len);
+ if (align)
+ skb_reserve(skb, align);
+ if (memcpy_fromiovec(skb_put(skb, len), iv, len)) {
+ tun->stats.rx_dropped++;
+ kfree_skb(skb);
+ return -EFAULT;
+ }
skb->dev = &tun->dev;
switch (tun->flags & TUN_TYPE_MASK) {
@@ -271,7 +271,8 @@
pi.flags |= TUN_PKT_STRIP;
}
- memcpy_toiovec(iv, (void *) &pi, sizeof(pi));
+ if(memcpy_toiovec(iv, (void *) &pi, sizeof(pi)))
+ return -EFAULT;
total += sizeof(pi);
}
--- linux-2.4.32/include/linux/skbuff.h 2006-10-28 19:31:31.000000000 +0100
+++ new.linux-2.4.32/include/linux/skbuff.h 2006-10-28 19:29:27.000000000 +0100
@@ -918,6 +918,49 @@
Index: linux-2.4.35.4/include/linux/skbuff.h
===================================================================
--- linux-2.4.35.4.orig/include/linux/skbuff.h 2007-12-15 05:19:38.654623841 +0100
+++ linux-2.4.35.4/include/linux/skbuff.h 2007-12-15 05:20:05.060128604 +0100
@@ -912,6 +912,49 @@
skb->tail+=len;
}
@@ -100,3 +52,55 @@
extern int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc);
static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
Index: linux-2.4.35.4/drivers/net/tun.c
===================================================================
--- linux-2.4.35.4.orig/drivers/net/tun.c 2007-12-15 05:19:38.642623156 +0100
+++ linux-2.4.35.4/drivers/net/tun.c 2007-12-15 05:20:05.056128377 +0100
@@ -185,22 +185,31 @@
{
struct tun_pi pi = { 0, __constant_htons(ETH_P_IP) };
struct sk_buff *skb;
- size_t len = count;
+ size_t len = count, align = 0;
if (!(tun->flags & TUN_NO_PI)) {
if ((len -= sizeof(pi)) > count)
return -EINVAL;
- memcpy_fromiovec((void *)&pi, iv, sizeof(pi));
+ if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi)))
+ return -EFAULT;
}
-
- if (!(skb = alloc_skb(len + 2, GFP_KERNEL))) {
+
+ if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV)
+ align = NET_IP_ALIGN;
+
+ if (!(skb = alloc_skb(len + align, GFP_KERNEL))) {
tun->stats.rx_dropped++;
return -ENOMEM;
}
- skb_reserve(skb, 2);
- memcpy_fromiovec(skb_put(skb, len), iv, len);
+ if (align)
+ skb_reserve(skb, align);
+ if (memcpy_fromiovec(skb_put(skb, len), iv, len)) {
+ tun->stats.rx_dropped++;
+ kfree_skb(skb);
+ return -EFAULT;
+ }
skb->dev = &tun->dev;
switch (tun->flags & TUN_TYPE_MASK) {
@@ -271,7 +280,8 @@
pi.flags |= TUN_PKT_STRIP;
}
- memcpy_toiovec(iv, (void *) &pi, sizeof(pi));
+ if(memcpy_toiovec(iv, (void *) &pi, sizeof(pi)))
+ return -EFAULT;
total += sizeof(pi);
}