diff --git a/target/linux/ar531x-2.4/Makefile b/target/linux/ar531x-2.4/Makefile
index 7201c04d29ec2a466b3ccf43e0ab4c6575bd37db..9525c92963fb9ce963227d37f5725786474d1414 100644
--- a/target/linux/ar531x-2.4/Makefile
+++ b/target/linux/ar531x-2.4/Makefile
@@ -16,10 +16,9 @@ define Target/Description
 	(e.g. Netgear WGT624, Linksys WRT55AG)
 endef
 
-
-LINUX_VERSION:=2.4.32
+LINUX_VERSION:=2.4.33.4
 LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
+LINUX_KERNEL_MD5SUM:=aca0257549c385a227088ad8853a72a2
 
 include $(INCLUDE_DIR)/kernel-build.mk
 $(eval $(call BuildKernel))
diff --git a/target/linux/ar531x-2.4/config b/target/linux/ar531x-2.4/config
index 49b26cdd0029625abaa7c7e1ae17e51d3c8a9c31..da16d1f3439eb2ee30a195f4eb42396291ad52af 100644
--- a/target/linux/ar531x-2.4/config
+++ b/target/linux/ar531x-2.4/config
@@ -755,6 +755,7 @@ CONFIG_MKISS=m
 #
 # CONFIG_INPUT is not set
 # CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_DUMMY_KEYB is not set
 # CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_EVDEV is not set
diff --git a/target/linux/ar7-2.4/Makefile b/target/linux/ar7-2.4/Makefile
index f59343756f0fe902d54e1dc1b8c70024c9830d04..f9d3290b623851bcd4887121b420abc5ef9bd156 100644
--- a/target/linux/ar7-2.4/Makefile
+++ b/target/linux/ar7-2.4/Makefile
@@ -15,9 +15,9 @@ define Target/Description
 	Build firmware images for TI AR7 based routers (w.g. Linksys WAG54G v2)
 endef
 
-LINUX_VERSION:=2.4.32
+LINUX_VERSION:=2.4.33.4
 LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
+LINUX_KERNEL_MD5SUM:=aca0257549c385a227088ad8853a72a2
 
 include $(INCLUDE_DIR)/kernel-build.mk
 DEFAULT_PACKAGES += kmod-avalanche-cpmac
diff --git a/target/linux/ar7-2.4/config b/target/linux/ar7-2.4/config
index adc39d56e30f0c347e96eba5db2b1ae91d015bab..1a58465d882ff43fe58f7bf1872a60e4b9ed6e57 100644
--- a/target/linux/ar7-2.4/config
+++ b/target/linux/ar7-2.4/config
@@ -736,6 +736,7 @@ CONFIG_SHAPER=m
 #
 # CONFIG_INPUT is not set
 # CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_DUMMY_KEYB is not set
 # CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_EVDEV is not set
diff --git a/target/linux/brcm-2.4/Makefile b/target/linux/brcm-2.4/Makefile
index 36160cf418b7aa26379ce3cf89395f9c0e8d65fd..1e909d98d7561b7b7a0b4db7e9c87d6fc05f901c 100644
--- a/target/linux/brcm-2.4/Makefile
+++ b/target/linux/brcm-2.4/Makefile
@@ -20,9 +20,9 @@ define Target/Description
 	with TFTP client too.
 endef
 
-LINUX_VERSION:=2.4.32
+LINUX_VERSION:=2.4.33.4
 LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
+LINUX_KERNEL_MD5SUM:=aca0257549c385a227088ad8853a72a2
 
 include $(INCLUDE_DIR)/kernel-build.mk
 DEFAULT_PACKAGES += kmod-switch nvram
diff --git a/target/linux/brcm-2.4/config b/target/linux/brcm-2.4/config
index fed5af7a717a699af86f065fd3fc1003a4676fd2..57e0c562dec72b73df6fff5ddfd8396ba79bb6c0 100644
--- a/target/linux/brcm-2.4/config
+++ b/target/linux/brcm-2.4/config
@@ -947,6 +947,7 @@ CONFIG_MKISS=m
 #
 # CONFIG_INPUT is not set
 # CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_DUMMY_KEYB is not set
 # CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_EVDEV is not set
diff --git a/target/linux/generic-2.4/patches/006-gcc4_fixes.patch b/target/linux/generic-2.4/patches/006-gcc4_fixes.patch
index 4034d1b48b85eab1ef716271cee010ee9d784417..beb0c52f8a511e8240eaff9eabc78d7dacc3ddd8 100644
--- a/target/linux/generic-2.4/patches/006-gcc4_fixes.patch
+++ b/target/linux/generic-2.4/patches/006-gcc4_fixes.patch
@@ -184,18 +184,6 @@ diff -rupN linux-2.4.32/drivers/sound/sound_firmware.c linux-2.4.32.gcc4-fixes-v
  static int do_mod_firmware_load(const char *fn, char **fp)
  {
  	int fd;
-diff -rupN linux-2.4.32/drivers/usb/host/ehci-q.c linux-2.4.32.gcc4-fixes-v12/drivers/usb/host/ehci-q.c
---- linux-2.4.32/drivers/usb/host/ehci-q.c	2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/drivers/usb/host/ehci-q.c	2005-11-17 13:32:13.000000000 +0100
-@@ -199,8 +199,6 @@ ehci_urb_done (struct ehci_hcd *ehci, st
- #ifdef	INTR_AUTOMAGIC
- 	struct urb		*resubmit = 0;
- 	struct usb_device	*dev = 0;
--
--	static int ehci_urb_enqueue (struct usb_hcd *, struct urb *, int);
- #endif
- 
- 	if (likely (urb->hcpriv != 0)) {
 diff -rupN linux-2.4.32/drivers/usb/inode.c linux-2.4.32.gcc4-fixes-v12/drivers/usb/inode.c
 --- linux-2.4.32/drivers/usb/inode.c	2004-02-18 15:16:23.000000000 +0100
 +++ linux-2.4.32.gcc4-fixes-v12/drivers/usb/inode.c	2005-11-17 13:32:13.000000000 +0100
diff --git a/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch b/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch
index b234c7028c88ef0c633656d961b3488baf829f3d..79acf443d80b14a105ad30d59b10a3b058fe9c60 100644
--- a/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch
+++ b/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch
@@ -753,28 +753,6 @@ diff -rupN linux-2.4.32/drivers/net/arlan.h linux-2.4.32.more-gcc4-fixes-v1/driv
  extern int	arlan_entry_debug;
  extern int	arlan_exit_debug;
  extern int	testMemory;
-diff -rupN linux-2.4.32/drivers/net/bonding/bond_alb.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/bonding/bond_alb.c
---- linux-2.4.32/drivers/net/bonding/bond_alb.c	2004-04-14 20:22:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/bonding/bond_alb.c	2005-11-17 13:31:16.000000000 +0100
-@@ -1275,7 +1275,7 @@ void bond_alb_deinitialize(struct bondin
- int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
- {
- 	struct bonding *bond = bond_dev->priv;
--	struct ethhdr *eth_data = (struct ethhdr *)skb->mac.raw = skb->data;
-+	struct ethhdr *eth_data;
- 	struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
- 	struct slave *tx_slave = NULL;
- 	static u32 ip_bcast = 0xffffffff;
-@@ -1285,6 +1285,9 @@ int bond_alb_xmit(struct sk_buff *skb, s
- 	u8 *hash_start = NULL;
- 	int res = 1;
- 
-+	skb->mac.raw = (unsigned char *)skb->data;
-+	eth_data = (struct ethhdr *)skb->mac.raw;
-+
- 	/* make sure that the curr_active_slave and the slaves list do
- 	 * not change during tx
- 	 */
 diff -rupN linux-2.4.32/drivers/net/de4x5.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/de4x5.c
 --- linux-2.4.32/drivers/net/de4x5.c	2004-02-18 15:16:23.000000000 +0100
 +++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/de4x5.c	2005-11-17 13:31:16.000000000 +0100
diff --git a/target/linux/generic-2.4/patches/115-amd_flash_timeout.patch b/target/linux/generic-2.4/patches/115-amd_flash_timeout.patch
deleted file mode 100644
index 188aa1c88aee31d77d666c985fb644f8d36c03cd..0000000000000000000000000000000000000000
--- a/target/linux/generic-2.4/patches/115-amd_flash_timeout.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -u linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0002.c.orig linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0002.c
---- linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0002.c.orig	2004-11-17 12:54:21.000000000 +0100
-+++ linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0002.c	2006-10-21 17:55:25.000000000 +0200
-@@ -510,7 +510,7 @@
- 	   or tells us why it failed. */        
- 	dq6 = CMD(1<<6);
- 	dq5 = CMD(1<<5);
--	timeo = jiffies + (HZ/1000); /* setting timeout to 1ms for now */
-+	timeo = jiffies + (HZ/1000) + 1; /* setting timeout to 1ms for now */
- 		
- 	oldstatus = cfi_read(map, adr);
- 	status = cfi_read(map, adr);
-@@ -547,7 +547,7 @@
- 				printk(KERN_WARNING "Internal flash device timeout occurred or write operation was performed while flash was programming.\n" );
- 			}
- 		} else {
--			printk(KERN_WARNING "Waiting for write to complete timed out in do_write_oneword.");        
-+			printk(KERN_WARNING "Waiting for write to complete timed out in do_write_oneword.\n");        
- 			
- 			chip->state = FL_READY;
- 			wake_up(&chip->wq);
-@@ -825,7 +825,7 @@
- 		chip->state = FL_READY;
- 		wake_up(&chip->wq);
- 		cfi_spin_unlock(chip->mutex);
--		printk("waiting for erase to complete timed out.");
-+		printk("waiting for erase to complete timed out.\n");
- 		DISABLE_VPP(map);
- 		return -EIO;
- 	}
-@@ -963,7 +963,7 @@
- 		}
-         else
-         {
--		    printk( "Waiting for erase to complete timed out in do_erase_oneblock.");        
-+		    printk( "Waiting for erase to complete timed out in do_erase_oneblock.\n");        
- 		    
- 		chip->state = FL_READY;
- 		wake_up(&chip->wq);
diff --git a/target/linux/generic-2.4/patches/228-more_usb_fixes.patch b/target/linux/generic-2.4/patches/228-more_usb_fixes.patch
index 40b24cac0f27ac39749c36fa7ca65c1df1739fab..f53a5247cad8efc546a75711bd4d3fd756c8345c 100644
--- a/target/linux/generic-2.4/patches/228-more_usb_fixes.patch
+++ b/target/linux/generic-2.4/patches/228-more_usb_fixes.patch
@@ -93,15 +93,6 @@ diff -ur linux.old/drivers/usb/host/ehci-q.c linux.dev/drivers/usb/host/ehci-q.c
 diff -ur linux.old/drivers/usb/host/usb-uhci.c linux.dev/drivers/usb/host/usb-uhci.c
 --- linux.old/drivers/usb/host/usb-uhci.c	2004-11-17 12:54:21.000000000 +0100
 +++ linux.dev/drivers/usb/host/usb-uhci.c	2006-07-30 12:10:16.000000000 +0200
-@@ -2491,7 +2491,7 @@
- 			((urb_priv_t*)urb->hcpriv)->flags=0;		       			
- 		}
- 		
--		if ((urb->status != -ECONNABORTED) && (urb->status != ECONNRESET) &&
-+		if ((urb->status != -ECONNABORTED) && (urb->status != -ECONNRESET) &&
- 			    (urb->status != -ENOENT)) {
- 
- 			urb->status = -EINPROGRESS;
 @@ -3034,6 +3034,21 @@
  	
  	pci_set_master(dev);
diff --git a/target/linux/generic-2.4/patches/229-pppoe_mtu_fix.patch b/target/linux/generic-2.4/patches/229-pppoe_mtu_fix.patch
deleted file mode 100644
index c2e4f064ca8b0975c1996f109f8cb31f426f4e11..0000000000000000000000000000000000000000
--- a/target/linux/generic-2.4/patches/229-pppoe_mtu_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- linux-2.4.30/drivers/net/pppoe.c.old	2006-10-10 13:49:12.000000000 +0200
-+++ linux-2.4.30/drivers/net/pppoe.c	2006-10-10 13:50:02.000000000 +0200
-@@ -639,6 +639,9 @@
- 		po->chan.hdrlen = (sizeof(struct pppoe_hdr) +
- 				   dev->hard_header_len);
- 
-+		if (po->chan.mtu > dev->mtu - sizeof(struct pppoe_hdr))
-+			po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr);
-+
- 		po->chan.private = sk;
- 		po->chan.ops = &pppoe_chan_ops;
-