aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/linux/generic/patches-2.6.38/010-l2tp_fix_oops_backport.patch (renamed from target/linux/generic/patches-2.6.38/160-l2tp_fix_oops_backport.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/020-ssb_update.patch (renamed from target/linux/generic/patches-2.6.38/941-ssb_update.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/067-block2mtd_2.6.38_fix.patch35
-rw-r--r--target/linux/generic/patches-2.6.38/100-overlayfs.patch (renamed from target/linux/generic/patches-2.6.38/209-overlayfs.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/101-overlayfs_fix_readdir_deadlock.patch (renamed from target/linux/generic/patches-2.6.38/210-overlayfs_fix_readdir_deadlock.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/102-overlayfs_fix_readdir_unlink_deadlock.patch (renamed from target/linux/generic/patches-2.6.38/211-overlayfs_fix_readdir_unlink_deadlock.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/200-fix_localversion.patch (renamed from target/linux/generic/patches-2.6.38/001-fix_localversion.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/201-extra_optimization.patch (renamed from target/linux/generic/patches-2.6.38/012-extra_optimization.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/210-darwin_scripts_include.patch (renamed from target/linux/generic/patches-2.6.38/902-darwin_scripts_include.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/211-stddef_include.patch (renamed from target/linux/generic/patches-2.6.38/903-stddef_include.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/220-module_exports.patch (renamed from target/linux/generic/patches-2.6.38/028-module_exports.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/230-openwrt_lzma_options.patch (renamed from target/linux/generic/patches-2.6.38/998-openwrt_lzma_options.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/250-netfilter_depends.patch (renamed from target/linux/generic/patches-2.6.38/180-netfilter_depends.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/251-sound_kconfig.patch (renamed from target/linux/generic/patches-2.6.38/220-sound_kconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/252-mv_cesa_depends.patch (renamed from target/linux/generic/patches-2.6.38/972-mv_cesa_depends.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/253-ssb_b43_default_on.patch (renamed from target/linux/generic/patches-2.6.38/974-ssb_b43_default_on.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/254-textsearch_kconfig_hacks.patch (renamed from target/linux/generic/patches-2.6.38/977-textsearch_kconfig_hacks.patch)2
-rw-r--r--target/linux/generic/patches-2.6.38/255-lib80211_kconfig_hacks.patch (renamed from target/linux/generic/patches-2.6.38/978-lib80211_kconfig_hacks.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/256-crypto_add_kconfig_prompts.patch (renamed from target/linux/generic/patches-2.6.38/979-crypto_add_kconfig_prompts.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/257-wireless_ext_kconfig_hack.patch (renamed from target/linux/generic/patches-2.6.38/981-wireless_ext_kconfig_hack.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/258-make_config_average_selectable.patch (renamed from target/linux/generic/patches-2.6.38/982-make-config-average-selectable.patch)2
-rw-r--r--target/linux/generic/patches-2.6.38/300-mips_expose_boot_raw.patch (renamed from target/linux/generic/patches-2.6.38/011-mips_expose_boot_raw.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/301-mips_image_cmdline_hack.patch (renamed from target/linux/generic/patches-2.6.38/021-mips_image_cmdline_hack.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/302-mips_use_generic_thread_info_allocator.patch (renamed from target/linux/generic/patches-2.6.38/022-mips_use_generic_thread_info_allocator.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/303-mips_fix_kexec.patch (renamed from target/linux/generic/patches-2.6.38/023-mips-fix-kexec.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/304-mips_disable_fpu.patch (renamed from target/linux/generic/patches-2.6.38/025-mips_disable_fpu.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/305-mips_module_reloc.patch (renamed from target/linux/generic/patches-2.6.38/027-mips_module_reloc.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/306-mips_mem_functions_performance.patch (renamed from target/linux/generic/patches-2.6.38/202-mips_mem_functions_performance.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/307-mips_oprofile_fix.patch (renamed from target/linux/generic/patches-2.6.38/208-mips_oprofile_fix.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/310-arm_module_unresolved_weak_sym.patch (renamed from target/linux/generic/patches-2.6.38/029-arm_module_unresolved_weak_sym.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/311-arm_update_mach_types.patch (renamed from target/linux/generic/patches-2.6.38/040-arm_update_mach-types.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/320-ppc4xx_optimization.patch (renamed from target/linux/generic/patches-2.6.38/991-ppc4xx_optimization.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/321-powerpc_crtsavres_prereq.patch (renamed from target/linux/generic/patches-2.6.38/950-powerpc_crtsavres_prereq.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/400-rootfs_split.patch (renamed from target/linux/generic/patches-2.6.38/065-rootfs_split.patch)290
-rw-r--r--target/linux/generic/patches-2.6.38/401-partial_eraseblock_write.patch (renamed from target/linux/generic/patches-2.6.38/222-partial_eraseblock_write.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/410-mtd_info_move_forward_decl.patch (renamed from target/linux/generic/patches-2.6.38/082-mtd_info_move_forward_decl.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/420-redboot_space.patch (renamed from target/linux/generic/patches-2.6.38/070-redboot_space.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/421-redboot_boardconfig.patch (renamed from target/linux/generic/patches-2.6.38/071-redboot_boardconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/430-mtd_myloader_partition_parser.patch (renamed from target/linux/generic/patches-2.6.38/081-mtd_myloader_partition_parser.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/440-block2mtd_init.patch (renamed from target/linux/generic/patches-2.6.38/060-block2mtd_init.patch)2
-rw-r--r--target/linux/generic/patches-2.6.38/441-block2mtd_refresh.patch291
-rw-r--r--target/linux/generic/patches-2.6.38/442-block2mtd_probe.patch (renamed from target/linux/generic/patches-2.6.38/066-block2mtd_probe.patch)4
-rw-r--r--target/linux/generic/patches-2.6.38/450-mtd_plat_nand_chip_fixup.patch (renamed from target/linux/generic/patches-2.6.38/080-mtd_plat_nand_chip_fixup.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/451-mtd_fix_nand_correct_data_return_code.patch (renamed from target/linux/generic/patches-2.6.38/083-mtd_fix_nand_correct_data_return_code.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/460-cfi_show_amd_extended_table_version.patch (renamed from target/linux/generic/patches-2.6.38/014-cfi_show_amd_extended_table_version.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/470-mtd_m25p80_add_pm25lv_flash_support.patch (renamed from target/linux/generic/patches-2.6.38/084-mtd_m25p80_add_pm25lv_flash_support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/471-mtd_m25p80_add_en25f32_chip_support.patch (renamed from target/linux/generic/patches-2.6.38/090-mtd-m25p80-add-en25f32-chip-support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/472-mtd_m25p80_add_MX25L1606E_support.patch (renamed from target/linux/generic/patches-2.6.38/091-mtd-m25p80-add-MX25L1606E-support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/500-yaffs_support.patch (renamed from target/linux/generic/patches-2.6.38/510-yaffs_support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/501-yaffs_cvs_2009_04_24.patch (renamed from target/linux/generic/patches-2.6.38/511-yaffs-cvs-2009-04-24.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/502-yaffs_git_2010_10_20.patch (renamed from target/linux/generic/patches-2.6.38/511-yaffs-git-2010-10-20.patch)2
-rw-r--r--target/linux/generic/patches-2.6.38/503-yaffs_symlink_bug.patch (renamed from target/linux/generic/patches-2.6.38/512-yaffs_symlink_bug.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/504-yaffs_mutex_fix.patch (renamed from target/linux/generic/patches-2.6.38/513-yaffs_mutex_fix.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/510-jffs2_make_lzma_available.patch (renamed from target/linux/generic/patches-2.6.38/008-jffs2_make_lzma_available.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/511-debloat_lzma.patch (renamed from target/linux/generic/patches-2.6.38/010-debloat_lzma.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/512-jffs2_eofdetect.patch (renamed from target/linux/generic/patches-2.6.38/204-jffs2_eofdetect.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/600-netfilter_layer7_2.22.patch (renamed from target/linux/generic/patches-2.6.38/100-netfilter_layer7_2.22.patch)2
-rw-r--r--target/linux/generic/patches-2.6.38/601-netfilter_layer7_pktmatch.patch (renamed from target/linux/generic/patches-2.6.38/101-netfilter_layer7_pktmatch.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/602-netfilter_layer7_match.patch (renamed from target/linux/generic/patches-2.6.38/102-netfilter_layer7_match.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/603-netfilter_layer7_2.6.36_fix.patch (renamed from target/linux/generic/patches-2.6.38/103-netfilter_layer7_2.6.36_fix.patch)4
-rw-r--r--target/linux/generic/patches-2.6.38/604-netfilter_cisco_794x_iphone.patch (renamed from target/linux/generic/patches-2.6.38/160-netfilter_cisco_794x_iphone.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/605-netfilter_rtsp.patch (renamed from target/linux/generic/patches-2.6.38/190-netfilter_rtsp.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/620-sched_esfq.patch (renamed from target/linux/generic/patches-2.6.38/200-sched_esfq.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/621-sched_act_connmark.patch (renamed from target/linux/generic/patches-2.6.38/290-sched_act_connmark.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/630-packet_socket_type.patch (renamed from target/linux/generic/patches-2.6.38/240-packet_socket_type.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/640-bridge_no_eap_forward.patch (renamed from target/linux/generic/patches-2.6.38/270-bridge_no_eap_forward.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/641-bridge_always_accept_eap.patch (renamed from target/linux/generic/patches-2.6.38/271-bridge_always_accept_eap.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/642-bridge_port_isolate.patch (renamed from target/linux/generic/patches-2.6.38/300-bridge_port_isolate.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/650-pppoe_header_pad.patch (renamed from target/linux/generic/patches-2.6.38/250-pppoe_header_pad.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/651-wireless_mesh_header.patch (renamed from target/linux/generic/patches-2.6.38/940-wireless_mesh_header.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/700-swconfig.patch (renamed from target/linux/generic/patches-2.6.38/650-swconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/701-phy_extension.patch (renamed from target/linux/generic/patches-2.6.38/600-phy_extension.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/702-phy_add_aneg_done_function.patch (renamed from target/linux/generic/patches-2.6.38/601-phy-add-aneg-done-function.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/720-phy_adm6996.patch (renamed from target/linux/generic/patches-2.6.38/620-phy_adm6996.patch)4
-rw-r--r--target/linux/generic/patches-2.6.38/721-phy_packets.patch (renamed from target/linux/generic/patches-2.6.38/630-phy_packets.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/722-phy_mvswitch.patch (renamed from target/linux/generic/patches-2.6.38/660-phy_mvswitch.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/723-phy_ip175c.patch (renamed from target/linux/generic/patches-2.6.38/670-phy_ip175c.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/724-phy_ar8216.patch (renamed from target/linux/generic/patches-2.6.38/680-phy_ar8216.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/725-phy_rtl8306.patch (renamed from target/linux/generic/patches-2.6.38/690-phy_rtl8306.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/726-phy_rtl8366.patch (renamed from target/linux/generic/patches-2.6.38/691-phy_rtl8366.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/750-hostap_txpower.patch (renamed from target/linux/generic/patches-2.6.38/903-hostap_txpower.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/810-pci_disable_common_quirks.patch (renamed from target/linux/generic/patches-2.6.38/030-pci_disable_common_quirks.patch)12
-rw-r--r--target/linux/generic/patches-2.6.38/811-pci_disable_usb_common_quirks.patch (renamed from target/linux/generic/patches-2.6.38/031-pci_disable_usb_common_quirks.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/820-usb_add_usb_find_device_by_name.patch (renamed from target/linux/generic/patches-2.6.38/310-usb-add-usb_find_device_by_name.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/821-usb_serial_endpoint_size.patch (renamed from target/linux/generic/patches-2.6.38/801-usb_serial_endpoint_size.patch)6
-rw-r--r--target/linux/generic/patches-2.6.38/830-ledtrig_morse.patch (renamed from target/linux/generic/patches-2.6.38/400-ledtrig_morse.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/831-ledtrig_netdev.patch (renamed from target/linux/generic/patches-2.6.38/402-ledtrig_netdev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/832-ledtrig_usbdev.patch (renamed from target/linux/generic/patches-2.6.38/403-ledtrig-usbdev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/833-gpio_buttons.patch (renamed from target/linux/generic/patches-2.6.38/410-gpio_buttons.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/834-gpio_ioctl.patch (renamed from target/linux/generic/patches-2.6.38/411-gpio_ioctl.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/835-gpiodev.patch (renamed from target/linux/generic/patches-2.6.38/420-gpiodev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/840-rtc7301.patch (renamed from target/linux/generic/patches-2.6.38/700-rtc7301.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/850-glamo_headers.patch (renamed from target/linux/generic/patches-2.6.38/750-glamo-headers.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/860-01_hotpluggable_spi_gpio.patch (renamed from target/linux/generic/patches-2.6.38/920-01-hotpluggable-spi-gpio.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/861-04_spi_gpio_implement_spi_delay.patch (renamed from target/linux/generic/patches-2.6.38/920-04-spi-gpio-implement-spi-delay.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/862-gpio_spi_driver.patch (renamed from target/linux/generic/patches-2.6.38/921-gpio_spi_driver.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/863-gpiommc.patch (renamed from target/linux/generic/patches-2.6.38/922-gpiommc.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/864-gpiommc_configfs_locking.patch (renamed from target/linux/generic/patches-2.6.38/923-gpiommc-configfs-locking.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/870-hifn795x_byteswap.patch (renamed from target/linux/generic/patches-2.6.38/975-hifn795x-byteswap.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/900-slab_maxsize.patch (renamed from target/linux/generic/patches-2.6.38/203-slab_maxsize.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/910-kobject_uevent.patch (renamed from target/linux/generic/patches-2.6.38/219-kobject_uevent.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/911-kobject_add_broadcast_uevent.patch (renamed from target/linux/generic/patches-2.6.38/223-kobject-add-broadcast_uevent.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/920-unable_to_open_console.patch (renamed from target/linux/generic/patches-2.6.38/840-unable_to_open_console.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/921-use_preinit_as_init.patch (renamed from target/linux/generic/patches-2.6.38/999-use_preinit_as_init.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/940-ocf_kbuild_integration.patch (renamed from target/linux/generic/patches-2.6.38/970-ocf_kbuild_integration.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/941-ocf_20100325.patch (renamed from target/linux/generic/patches-2.6.38/971-ocf_20100325.patch)0
-rw-r--r--target/linux/generic/patches-2.6.38/950-vm_exports.patch (renamed from target/linux/generic/patches-2.6.38/980-vm_exports.patch)48
-rw-r--r--target/linux/generic/patches-2.6.38/960-decompress_unlzo_fix.patch (renamed from target/linux/generic/patches-2.6.38/009-decompress_unlzo_fix.patch)0
108 files changed, 324 insertions, 380 deletions
diff --git a/target/linux/generic/patches-2.6.38/160-l2tp_fix_oops_backport.patch b/target/linux/generic/patches-2.6.38/010-l2tp_fix_oops_backport.patch
index d8b7b5ad3d..d8b7b5ad3d 100644
--- a/target/linux/generic/patches-2.6.38/160-l2tp_fix_oops_backport.patch
+++ b/target/linux/generic/patches-2.6.38/010-l2tp_fix_oops_backport.patch
diff --git a/target/linux/generic/patches-2.6.38/941-ssb_update.patch b/target/linux/generic/patches-2.6.38/020-ssb_update.patch
index 0d86b7e589..0d86b7e589 100644
--- a/target/linux/generic/patches-2.6.38/941-ssb_update.patch
+++ b/target/linux/generic/patches-2.6.38/020-ssb_update.patch
diff --git a/target/linux/generic/patches-2.6.38/067-block2mtd_2.6.38_fix.patch b/target/linux/generic/patches-2.6.38/067-block2mtd_2.6.38_fix.patch
deleted file mode 100644
index 1a052b3f43..0000000000
--- a/target/linux/generic/patches-2.6.38/067-block2mtd_2.6.38_fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- a/drivers/mtd/devices/block2mtd.c
-+++ b/drivers/mtd/devices/block2mtd.c
-@@ -264,12 +264,13 @@ static int _open_bdev(struct block2mtd_d
- bdev = blkdev_get_by_path(dev->devname, mode, dev);
- #ifndef MODULE
- if (IS_ERR(bdev)) {
-+ dev_t devt;
-
- /* We might not have rootfs mounted at this point. Try
- to resolve the device name by other means. */
-
- wait_for_device_probe();
-- dev_t devt = name_to_dev_t(dev->devname);
-+ devt = name_to_dev_t(dev->devname);
- if (devt)
- bdev = blkdev_get_by_dev(devt, mode, dev);
- }
-@@ -330,7 +331,7 @@ static int block2mtd_refresh(struct mtd_
- _close_bdev(dev);
-
- /* open the whole disk, issue a partition rescan, then */
-- bdev = blkdev_get_by_dev(devt, FMODE_WRITE | FMODE_READ);
-+ bdev = blkdev_get_by_dev(devt, FMODE_WRITE | FMODE_READ, mtd);
- if (!bdev || !bdev->bd_disk)
- err = -EINVAL;
- #ifndef CONFIG_MTD_BLOCK2MTD_MODULE
-@@ -395,7 +396,7 @@ static struct block2mtd_dev *add_device(
- dev->mtd.refresh_device = block2mtd_refresh;
-
- part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
-- part->name = dev->mtd.name;
-+ part->name = name;
- part->offset = 0;
- part->size = dev->mtd.size;
- if (add_mtd_partitions(&dev->mtd, part, 1)) {
diff --git a/target/linux/generic/patches-2.6.38/209-overlayfs.patch b/target/linux/generic/patches-2.6.38/100-overlayfs.patch
index d526865a08..d526865a08 100644
--- a/target/linux/generic/patches-2.6.38/209-overlayfs.patch
+++ b/target/linux/generic/patches-2.6.38/100-overlayfs.patch
diff --git a/target/linux/generic/patches-2.6.38/210-overlayfs_fix_readdir_deadlock.patch b/target/linux/generic/patches-2.6.38/101-overlayfs_fix_readdir_deadlock.patch
index 81ef4c084f..81ef4c084f 100644
--- a/target/linux/generic/patches-2.6.38/210-overlayfs_fix_readdir_deadlock.patch
+++ b/target/linux/generic/patches-2.6.38/101-overlayfs_fix_readdir_deadlock.patch
diff --git a/target/linux/generic/patches-2.6.38/211-overlayfs_fix_readdir_unlink_deadlock.patch b/target/linux/generic/patches-2.6.38/102-overlayfs_fix_readdir_unlink_deadlock.patch
index 6f4ceb4b77..6f4ceb4b77 100644
--- a/target/linux/generic/patches-2.6.38/211-overlayfs_fix_readdir_unlink_deadlock.patch
+++ b/target/linux/generic/patches-2.6.38/102-overlayfs_fix_readdir_unlink_deadlock.patch
diff --git a/target/linux/generic/patches-2.6.38/001-fix_localversion.patch b/target/linux/generic/patches-2.6.38/200-fix_localversion.patch
index 70ed0ff3cb..70ed0ff3cb 100644
--- a/target/linux/generic/patches-2.6.38/001-fix_localversion.patch
+++ b/target/linux/generic/patches-2.6.38/200-fix_localversion.patch
diff --git a/target/linux/generic/patches-2.6.38/012-extra_optimization.patch b/target/linux/generic/patches-2.6.38/201-extra_optimization.patch
index d173e4c753..d173e4c753 100644
--- a/target/linux/generic/patches-2.6.38/012-extra_optimization.patch
+++ b/target/linux/generic/patches-2.6.38/201-extra_optimization.patch
diff --git a/target/linux/generic/patches-2.6.38/902-darwin_scripts_include.patch b/target/linux/generic/patches-2.6.38/210-darwin_scripts_include.patch
index 0686a38973..0686a38973 100644
--- a/target/linux/generic/patches-2.6.38/902-darwin_scripts_include.patch
+++ b/target/linux/generic/patches-2.6.38/210-darwin_scripts_include.patch
diff --git a/target/linux/generic/patches-2.6.38/903-stddef_include.patch b/target/linux/generic/patches-2.6.38/211-stddef_include.patch
index 7fe248d8d3..7fe248d8d3 100644
--- a/target/linux/generic/patches-2.6.38/903-stddef_include.patch
+++ b/target/linux/generic/patches-2.6.38/211-stddef_include.patch
diff --git a/target/linux/generic/patches-2.6.38/028-module_exports.patch b/target/linux/generic/patches-2.6.38/220-module_exports.patch
index 5268115f01..5268115f01 100644
--- a/target/linux/generic/patches-2.6.38/028-module_exports.patch
+++ b/target/linux/generic/patches-2.6.38/220-module_exports.patch
diff --git a/target/linux/generic/patches-2.6.38/998-openwrt_lzma_options.patch b/target/linux/generic/patches-2.6.38/230-openwrt_lzma_options.patch
index 67e0ceefb0..67e0ceefb0 100644
--- a/target/linux/generic/patches-2.6.38/998-openwrt_lzma_options.patch
+++ b/target/linux/generic/patches-2.6.38/230-openwrt_lzma_options.patch
diff --git a/target/linux/generic/patches-2.6.38/180-netfilter_depends.patch b/target/linux/generic/patches-2.6.38/250-netfilter_depends.patch
index d270e9020b..d270e9020b 100644
--- a/target/linux/generic/patches-2.6.38/180-netfilter_depends.patch
+++ b/target/linux/generic/patches-2.6.38/250-netfilter_depends.patch
diff --git a/target/linux/generic/patches-2.6.38/220-sound_kconfig.patch b/target/linux/generic/patches-2.6.38/251-sound_kconfig.patch
index fb3df254dc..fb3df254dc 100644
--- a/target/linux/generic/patches-2.6.38/220-sound_kconfig.patch
+++ b/target/linux/generic/patches-2.6.38/251-sound_kconfig.patch
diff --git a/target/linux/generic/patches-2.6.38/972-mv_cesa_depends.patch b/target/linux/generic/patches-2.6.38/252-mv_cesa_depends.patch
index 1fd2f6365a..1fd2f6365a 100644
--- a/target/linux/generic/patches-2.6.38/972-mv_cesa_depends.patch
+++ b/target/linux/generic/patches-2.6.38/252-mv_cesa_depends.patch
diff --git a/target/linux/generic/patches-2.6.38/974-ssb_b43_default_on.patch b/target/linux/generic/patches-2.6.38/253-ssb_b43_default_on.patch
index 3176dcb4d8..3176dcb4d8 100644
--- a/target/linux/generic/patches-2.6.38/974-ssb_b43_default_on.patch
+++ b/target/linux/generic/patches-2.6.38/253-ssb_b43_default_on.patch
diff --git a/target/linux/generic/patches-2.6.38/977-textsearch_kconfig_hacks.patch b/target/linux/generic/patches-2.6.38/254-textsearch_kconfig_hacks.patch
index b5d9a7ecd0..e9577ba5a0 100644
--- a/target/linux/generic/patches-2.6.38/977-textsearch_kconfig_hacks.patch
+++ b/target/linux/generic/patches-2.6.38/254-textsearch_kconfig_hacks.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -164,16 +164,16 @@ config REED_SOLOMON_DEC16
+@@ -158,16 +158,16 @@ config REED_SOLOMON_DEC16
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
diff --git a/target/linux/generic/patches-2.6.38/978-lib80211_kconfig_hacks.patch b/target/linux/generic/patches-2.6.38/255-lib80211_kconfig_hacks.patch
index c044deac00..c044deac00 100644
--- a/target/linux/generic/patches-2.6.38/978-lib80211_kconfig_hacks.patch
+++ b/target/linux/generic/patches-2.6.38/255-lib80211_kconfig_hacks.patch
diff --git a/target/linux/generic/patches-2.6.38/979-crypto_add_kconfig_prompts.patch b/target/linux/generic/patches-2.6.38/256-crypto_add_kconfig_prompts.patch
index 8462c711f0..8462c711f0 100644
--- a/target/linux/generic/patches-2.6.38/979-crypto_add_kconfig_prompts.patch
+++ b/target/linux/generic/patches-2.6.38/256-crypto_add_kconfig_prompts.patch
diff --git a/target/linux/generic/patches-2.6.38/981-wireless_ext_kconfig_hack.patch b/target/linux/generic/patches-2.6.38/257-wireless_ext_kconfig_hack.patch
index daac5898ae..daac5898ae 100644
--- a/target/linux/generic/patches-2.6.38/981-wireless_ext_kconfig_hack.patch
+++ b/target/linux/generic/patches-2.6.38/257-wireless_ext_kconfig_hack.patch
diff --git a/target/linux/generic/patches-2.6.38/982-make-config-average-selectable.patch b/target/linux/generic/patches-2.6.38/258-make_config_average_selectable.patch
index 18fff0aa55..e66391cb0a 100644
--- a/target/linux/generic/patches-2.6.38/982-make-config-average-selectable.patch
+++ b/target/linux/generic/patches-2.6.38/258-make_config_average_selectable.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -223,6 +223,13 @@ config LRU_CACHE
+@@ -217,6 +217,13 @@ config LRU_CACHE
tristate
config AVERAGE
diff --git a/target/linux/generic/patches-2.6.38/011-mips_expose_boot_raw.patch b/target/linux/generic/patches-2.6.38/300-mips_expose_boot_raw.patch
index bd83f665a3..bd83f665a3 100644
--- a/target/linux/generic/patches-2.6.38/011-mips_expose_boot_raw.patch
+++ b/target/linux/generic/patches-2.6.38/300-mips_expose_boot_raw.patch
diff --git a/target/linux/generic/patches-2.6.38/021-mips_image_cmdline_hack.patch b/target/linux/generic/patches-2.6.38/301-mips_image_cmdline_hack.patch
index b499334556..b499334556 100644
--- a/target/linux/generic/patches-2.6.38/021-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/patches-2.6.38/301-mips_image_cmdline_hack.patch
diff --git a/target/linux/generic/patches-2.6.38/022-mips_use_generic_thread_info_allocator.patch b/target/linux/generic/patches-2.6.38/302-mips_use_generic_thread_info_allocator.patch
index 915bb5f92c..915bb5f92c 100644
--- a/target/linux/generic/patches-2.6.38/022-mips_use_generic_thread_info_allocator.patch
+++ b/target/linux/generic/patches-2.6.38/302-mips_use_generic_thread_info_allocator.patch
diff --git a/target/linux/generic/patches-2.6.38/023-mips-fix-kexec.patch b/target/linux/generic/patches-2.6.38/303-mips_fix_kexec.patch
index e6928dde91..e6928dde91 100644
--- a/target/linux/generic/patches-2.6.38/023-mips-fix-kexec.patch
+++ b/target/linux/generic/patches-2.6.38/303-mips_fix_kexec.patch
diff --git a/target/linux/generic/patches-2.6.38/025-mips_disable_fpu.patch b/target/linux/generic/patches-2.6.38/304-mips_disable_fpu.patch
index d1f60df64d..d1f60df64d 100644
--- a/target/linux/generic/patches-2.6.38/025-mips_disable_fpu.patch
+++ b/target/linux/generic/patches-2.6.38/304-mips_disable_fpu.patch
diff --git a/target/linux/generic/patches-2.6.38/027-mips_module_reloc.patch b/target/linux/generic/patches-2.6.38/305-mips_module_reloc.patch
index 5513962cb2..5513962cb2 100644
--- a/target/linux/generic/patches-2.6.38/027-mips_module_reloc.patch
+++ b/target/linux/generic/patches-2.6.38/305-mips_module_reloc.patch
diff --git a/target/linux/generic/patches-2.6.38/202-mips_mem_functions_performance.patch b/target/linux/generic/patches-2.6.38/306-mips_mem_functions_performance.patch
index 6ea9ba51ee..6ea9ba51ee 100644
--- a/target/linux/generic/patches-2.6.38/202-mips_mem_functions_performance.patch
+++ b/target/linux/generic/patches-2.6.38/306-mips_mem_functions_performance.patch
diff --git a/target/linux/generic/patches-2.6.38/208-mips_oprofile_fix.patch b/target/linux/generic/patches-2.6.38/307-mips_oprofile_fix.patch
index f83c96bb81..f83c96bb81 100644
--- a/target/linux/generic/patches-2.6.38/208-mips_oprofile_fix.patch
+++ b/target/linux/generic/patches-2.6.38/307-mips_oprofile_fix.patch
diff --git a/target/linux/generic/patches-2.6.38/029-arm_module_unresolved_weak_sym.patch b/target/linux/generic/patches-2.6.38/310-arm_module_unresolved_weak_sym.patch
index fe7027c070..fe7027c070 100644
--- a/target/linux/generic/patches-2.6.38/029-arm_module_unresolved_weak_sym.patch
+++ b/target/linux/generic/patches-2.6.38/310-arm_module_unresolved_weak_sym.patch
diff --git a/target/linux/generic/patches-2.6.38/040-arm_update_mach-types.patch b/target/linux/generic/patches-2.6.38/311-arm_update_mach_types.patch
index 8f08864f21..8f08864f21 100644
--- a/target/linux/generic/patches-2.6.38/040-arm_update_mach-types.patch
+++ b/target/linux/generic/patches-2.6.38/311-arm_update_mach_types.patch
diff --git a/target/linux/generic/patches-2.6.38/991-ppc4xx_optimization.patch b/target/linux/generic/patches-2.6.38/320-ppc4xx_optimization.patch
index 49d3659286..49d3659286 100644
--- a/target/linux/generic/patches-2.6.38/991-ppc4xx_optimization.patch
+++ b/target/linux/generic/patches-2.6.38/320-ppc4xx_optimization.patch
diff --git a/target/linux/generic/patches-2.6.38/950-powerpc_crtsavres_prereq.patch b/target/linux/generic/patches-2.6.38/321-powerpc_crtsavres_prereq.patch
index 402cd0cacb..402cd0cacb 100644
--- a/target/linux/generic/patches-2.6.38/950-powerpc_crtsavres_prereq.patch
+++ b/target/linux/generic/patches-2.6.38/321-powerpc_crtsavres_prereq.patch
diff --git a/target/linux/generic/patches-2.6.38/065-rootfs_split.patch b/target/linux/generic/patches-2.6.38/400-rootfs_split.patch
index 7a82354dd7..a8e4be6ae7 100644
--- a/target/linux/generic/patches-2.6.38/065-rootfs_split.patch
+++ b/target/linux/generic/patches-2.6.38/400-rootfs_split.patch
@@ -256,296 +256,6 @@
static DEFINE_SPINLOCK(part_parser_lock);
static LIST_HEAD(part_parsers);
---- a/drivers/mtd/devices/block2mtd.c
-+++ b/drivers/mtd/devices/block2mtd.c
-@@ -30,6 +30,8 @@ struct block2mtd_dev {
- struct block_device *blkdev;
- struct mtd_info mtd;
- struct mutex write_mutex;
-+ rwlock_t bdev_mutex;
-+ char devname[0];
- };
-
-
-@@ -82,6 +84,12 @@ static int block2mtd_erase(struct mtd_in
- size_t len = instr->len;
- int err;
-
-+ read_lock(&dev->bdev_mutex);
-+ if (!dev->blkdev) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
- instr->state = MTD_ERASING;
- mutex_lock(&dev->write_mutex);
- err = _block2mtd_erase(dev, from, len);
-@@ -93,6 +101,10 @@ static int block2mtd_erase(struct mtd_in
- instr->state = MTD_ERASE_DONE;
-
- mtd_erase_callback(instr);
-+
-+done:
-+ read_unlock(&dev->bdev_mutex);
-+
- return err;
- }
-
-@@ -104,10 +116,14 @@ static int block2mtd_read(struct mtd_inf
- struct page *page;
- int index = from >> PAGE_SHIFT;
- int offset = from & (PAGE_SIZE-1);
-- int cpylen;
-+ int cpylen, err = 0;
-+
-+ read_lock(&dev->bdev_mutex);
-+ if (!dev->blkdev || (from > mtd->size)) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-
-- if (from > mtd->size)
-- return -EINVAL;
- if (from + len > mtd->size)
- len = mtd->size - from;
-
-@@ -122,10 +138,14 @@ static int block2mtd_read(struct mtd_inf
- len = len - cpylen;
-
- page = page_read(dev->blkdev->bd_inode->i_mapping, index);
-- if (!page)
-- return -ENOMEM;
-- if (IS_ERR(page))
-- return PTR_ERR(page);
-+ if (!page) {
-+ err = -ENOMEM;
-+ goto done;
-+ }
-+ if (IS_ERR(page)) {
-+ err = PTR_ERR(page);
-+ goto done;
-+ }
-
- memcpy(buf, page_address(page) + offset, cpylen);
- page_cache_release(page);
-@@ -136,7 +156,10 @@ static int block2mtd_read(struct mtd_inf
- offset = 0;
- index++;
- }
-- return 0;
-+
-+done:
-+ read_unlock(&dev->bdev_mutex);
-+ return err;
- }
-
-
-@@ -188,12 +211,22 @@ static int block2mtd_write(struct mtd_in
- size_t *retlen, const u_char *buf)
- {
- struct block2mtd_dev *dev = mtd->priv;
-- int err;
-+ int err = 0;
-+
-+ read_lock(&dev->bdev_mutex);
-+ if (!dev->blkdev) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-
- if (!len)
-- return 0;
-- if (to >= mtd->size)
-- return -ENOSPC;
-+ goto done;
-+
-+ if (to >= mtd->size) {
-+ err = -ENOSPC;
-+ goto done;
-+ }
-+
- if (to + len > mtd->size)
- len = mtd->size - to;
-
-@@ -202,6 +235,9 @@ static int block2mtd_write(struct mtd_in
- mutex_unlock(&dev->write_mutex);
- if (err > 0)
- err = 0;
-+
-+done:
-+ read_unlock(&dev->bdev_mutex);
- return err;
- }
-
-@@ -210,33 +246,109 @@ static int block2mtd_write(struct mtd_in
- static void block2mtd_sync(struct mtd_info *mtd)
- {
- struct block2mtd_dev *dev = mtd->priv;
-+ read_lock(&dev->bdev_mutex);
-+ if (dev->blkdev)
- sync_blockdev(dev->blkdev);
-+ read_unlock(&dev->bdev_mutex);
-+
- return;
- }
-
-
-+static int _open_bdev(struct block2mtd_dev *dev)
-+{
-+ const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
-+ struct block_device *bdev;
-+
-+ /* Get a handle on the device */
-+ bdev = blkdev_get_by_path(dev->devname, mode, dev);
-+#ifndef MODULE
-+ if (IS_ERR(bdev)) {
-+
-+ /* We might not have rootfs mounted at this point. Try
-+ to resolve the device name by other means. */
-+
-+ dev_t devt = name_to_dev_t(dev->devname);
-+ if (devt)
-+ bdev = blkdev_get_by_dev(devt, mode, dev);
-+ }
-+#endif
-+
-+ if (IS_ERR(bdev)) {
-+ ERROR("error: cannot open device %s", dev->devname);
-+ return 1;
-+ }
-+ dev->blkdev = bdev;
-+
-+ if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
-+ ERROR("attempting to use an MTD device as a block device");
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+static void _close_bdev(struct block2mtd_dev *dev)
-+{
-+ struct block_device *bdev;
-+
-+ if (!dev->blkdev)
-+ return;
-+
-+ bdev = dev->blkdev;
-+ invalidate_mapping_pages(dev->blkdev->bd_inode->i_mapping, 0, -1);
-+ blkdev_put(dev->blkdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
-+ dev->blkdev = NULL;
-+}
-+
- static void block2mtd_free_device(struct block2mtd_dev *dev)
- {
- if (!dev)
- return;
-
- kfree(dev->mtd.name);
--
-- if (dev->blkdev) {
-- invalidate_mapping_pages(dev->blkdev->bd_inode->i_mapping,
-- 0, -1);
-- blkdev_put(dev->blkdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
-- }
--
-+ _close_bdev(dev);
- kfree(dev);
- }
-
-
--/* FIXME: ensure that mtd->size % erase_size == 0 */
--static struct block2mtd_dev *add_device(char *devname, int erase_size, const char *mtdname)
-+static int block2mtd_refresh(struct mtd_info *mtd)
- {
-- const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
-+ struct block2mtd_dev *dev = mtd->priv;
- struct block_device *bdev;
-+ dev_t devt;
-+ int err = 0;
-+
-+ /* no other mtd function can run at this point */
-+ write_lock(&dev->bdev_mutex);
-+
-+ /* get the device number for the whole disk */
-+ devt = MKDEV(MAJOR(dev->blkdev->bd_dev), 0);
-+
-+ /* close the old block device */
-+ _close_bdev(dev);
-+
-+ /* open the whole disk, issue a partition rescan, then */
-+ bdev = blkdev_get_by_dev(devt, FMODE_WRITE | FMODE_READ);
-+ if (!bdev || !bdev->bd_disk)
-+ err = -EINVAL;
-+#ifndef CONFIG_MTD_BLOCK2MTD_MODULE
-+ else
-+ err = rescan_partitions(bdev->bd_disk, bdev);
-+#endif
-+ if (bdev)
-+ blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
-+
-+ /* try to open the partition block device again */
-+ _open_bdev(dev);
-+ write_unlock(&dev->bdev_mutex);
-+
-+ return err;
-+}
-+
-+/* FIXME: ensure that mtd->size % erase_size == 0 */
-+static struct block2mtd_dev *add_device(char *devname, int erase_size, char *mtdname)
-+{
- struct block2mtd_dev *dev;
- struct mtd_partition *part;
- char *name;
-@@ -244,36 +356,17 @@ static struct block2mtd_dev *add_device(
- if (!devname)
- return NULL;
-
-- dev = kzalloc(sizeof(struct block2mtd_dev), GFP_KERNEL);
-+ dev = kzalloc(sizeof(struct block2mtd_dev) + strlen(devname) + 1, GFP_KERNEL);
- if (!dev)
- return NULL;
-
-- /* Get a handle on the device */
-- bdev = blkdev_get_by_path(devname, mode, dev);
--#ifndef MODULE
-- if (IS_ERR(bdev)) {
--
-- /* We might not have rootfs mounted at this point. Try
-- to resolve the device name by other means. */
-+ strcpy(dev->devname, devname);
-
-- dev_t devt = name_to_dev_t(devname);
-- if (devt)
-- bdev = blkdev_get_by_dev(devt, mode, dev);
-- }
--#endif
--
-- if (IS_ERR(bdev)) {
-- ERROR("error: cannot open device %s", devname);
-+ if (_open_bdev(dev))
- goto devinit_err;
-- }
-- dev->blkdev = bdev;
--
-- if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
-- ERROR("attempting to use an MTD device as a block device");
-- goto devinit_err;
-- }
-
- mutex_init(&dev->write_mutex);
-+ rwlock_init(&dev->bdev_mutex);
-
- /* Setup the MTD structure */
- /* make the name contain the block device in */
-@@ -298,6 +391,7 @@ static struct block2mtd_dev *add_device(
- dev->mtd.read = block2mtd_read;
- dev->mtd.priv = dev;
- dev->mtd.owner = THIS_MODULE;
-+ dev->mtd.refresh_device = block2mtd_refresh;
-
- part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
- part->name = dev->mtd.name;
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -841,6 +841,13 @@ static int mtd_ioctl(struct file *file,
diff --git a/target/linux/generic/patches-2.6.38/222-partial_eraseblock_write.patch b/target/linux/generic/patches-2.6.38/401-partial_eraseblock_write.patch
index 873c0d1cb1..873c0d1cb1 100644
--- a/target/linux/generic/patches-2.6.38/222-partial_eraseblock_write.patch
+++ b/target/linux/generic/patches-2.6.38/401-partial_eraseblock_write.patch
diff --git a/target/linux/generic/patches-2.6.38/082-mtd_info_move_forward_decl.patch b/target/linux/generic/patches-2.6.38/410-mtd_info_move_forward_decl.patch
index 13f0a217d4..13f0a217d4 100644
--- a/target/linux/generic/patches-2.6.38/082-mtd_info_move_forward_decl.patch
+++ b/target/linux/generic/patches-2.6.38/410-mtd_info_move_forward_decl.patch
diff --git a/target/linux/generic/patches-2.6.38/070-redboot_space.patch b/target/linux/generic/patches-2.6.38/420-redboot_space.patch
index fb6700b07e..fb6700b07e 100644
--- a/target/linux/generic/patches-2.6.38/070-redboot_space.patch
+++ b/target/linux/generic/patches-2.6.38/420-redboot_space.patch
diff --git a/target/linux/generic/patches-2.6.38/071-redboot_boardconfig.patch b/target/linux/generic/patches-2.6.38/421-redboot_boardconfig.patch
index 9188cee29c..9188cee29c 100644
--- a/target/linux/generic/patches-2.6.38/071-redboot_boardconfig.patch
+++ b/target/linux/generic/patches-2.6.38/421-redboot_boardconfig.patch
diff --git a/target/linux/generic/patches-2.6.38/081-mtd_myloader_partition_parser.patch b/target/linux/generic/patches-2.6.38/430-mtd_myloader_partition_parser.patch
index 6e3e3b7085..6e3e3b7085 100644
--- a/target/linux/generic/patches-2.6.38/081-mtd_myloader_partition_parser.patch
+++ b/target/linux/generic/patches-2.6.38/430-mtd_myloader_partition_parser.patch
diff --git a/target/linux/generic/patches-2.6.38/060-block2mtd_init.patch b/target/linux/generic/patches-2.6.38/440-block2mtd_init.patch
index 60d96b1a97..f8495b4e80 100644
--- a/target/linux/generic/patches-2.6.38/060-block2mtd_init.patch
+++ b/target/linux/generic/patches-2.6.38/440-block2mtd_init.patch
@@ -47,7 +47,7 @@
- if (add_mtd_device(&dev->mtd)) {
+ part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
-+ part->name = dev->mtd.name;
++ part->name = name;
+ part->offset = 0;
+ part->size = dev->mtd.size;
+ if (add_mtd_partitions(&dev->mtd, part, 1)) {
diff --git a/target/linux/generic/patches-2.6.38/441-block2mtd_refresh.patch b/target/linux/generic/patches-2.6.38/441-block2mtd_refresh.patch
new file mode 100644
index 0000000000..24ee22f5f6
--- /dev/null
+++ b/target/linux/generic/patches-2.6.38/441-block2mtd_refresh.patch
@@ -0,0 +1,291 @@
+--- a/drivers/mtd/devices/block2mtd.c
++++ b/drivers/mtd/devices/block2mtd.c
+@@ -30,6 +30,8 @@ struct block2mtd_dev {
+ struct block_device *blkdev;
+ struct mtd_info mtd;
+ struct mutex write_mutex;
++ rwlock_t bdev_mutex;
++ char devname[0];
+ };
+
+
+@@ -82,6 +84,12 @@ static int block2mtd_erase(struct mtd_in
+ size_t len = instr->len;
+ int err;
+
++ read_lock(&dev->bdev_mutex);
++ if (!dev->blkdev) {
++ err = -EINVAL;
++ goto done;
++ }
++
+ instr->state = MTD_ERASING;
+ mutex_lock(&dev->write_mutex);
+ err = _block2mtd_erase(dev, from, len);
+@@ -93,6 +101,10 @@ static int block2mtd_erase(struct mtd_in
+ instr->state = MTD_ERASE_DONE;
+
+ mtd_erase_callback(instr);
++
++done:
++ read_unlock(&dev->bdev_mutex);
++
+ return err;
+ }
+
+@@ -104,10 +116,14 @@ static int block2mtd_read(struct mtd_inf
+ struct page *page;
+ int index = from >> PAGE_SHIFT;
+ int offset = from & (PAGE_SIZE-1);
+- int cpylen;
++ int cpylen, err = 0;
++
++ read_lock(&dev->bdev_mutex);
++ if (!dev->blkdev || (from > mtd->size)) {
++ err = -EINVAL;
++ goto done;
++ }
+
+- if (from > mtd->size)
+- return -EINVAL;
+ if (from + len > mtd->size)
+ len = mtd->size - from;
+
+@@ -122,10 +138,14 @@ static int block2mtd_read(struct mtd_inf
+ len = len - cpylen;
+
+ page = page_read(dev->blkdev->bd_inode->i_mapping, index);
+- if (!page)
+- return -ENOMEM;
+- if (IS_ERR(page))
+- return PTR_ERR(page);
++ if (!page) {
++ err = -ENOMEM;
++ goto done;
++ }
++ if (IS_ERR(page)) {
++ err = PTR_ERR(page);
++ goto done;
++ }
+
+ memcpy(buf, page_address(page) + offset, cpylen);
+ page_cache_release(page);
+@@ -136,7 +156,10 @@ static int block2mtd_read(struct mtd_inf
+ offset = 0;
+ index++;
+ }
+- return 0;
++
++done:
++ read_unlock(&dev->bdev_mutex);
++ return err;
+ }
+
+
+@@ -188,12 +211,22 @@ static int block2mtd_write(struct mtd_in
+ size_t *retlen, const u_char *buf)
+ {
+ struct block2mtd_dev *dev = mtd->priv;
+- int err;
++ int err = 0;
++
++ read_lock(&dev->bdev_mutex);
++ if (!dev->blkdev) {
++ err = -EINVAL;
++ goto done;
++ }
+
+ if (!len)
+- return 0;
+- if (to >= mtd->size)
+- return -ENOSPC;
++ goto done;
++
++ if (to >= mtd->size) {
++ err = -ENOSPC;
++ goto done;
++ }
++
+ if (to + len > mtd->size)
+ len = mtd->size - to;
+
+@@ -202,6 +235,9 @@ static int block2mtd_write(struct mtd_in
+ mutex_unlock(&dev->write_mutex);
+ if (err > 0)
+ err = 0;
++
++done:
++ read_unlock(&dev->bdev_mutex);
+ return err;
+ }
+
+@@ -210,33 +246,110 @@ static int block2mtd_write(struct mtd_in
+ static void block2mtd_sync(struct mtd_info *mtd)
+ {
+ struct block2mtd_dev *dev = mtd->priv;
++ read_lock(&dev->bdev_mutex);
++ if (dev->blkdev)
+ sync_blockdev(dev->blkdev);
++ read_unlock(&dev->bdev_mutex);
++
+ return;
+ }
+
+
++static int _open_bdev(struct block2mtd_dev *dev)
++{
++ const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
++ struct block_device *bdev;
++
++ /* Get a handle on the device */
++ bdev = blkdev_get_by_path(dev->devname, mode, dev);
++#ifndef MODULE
++ if (IS_ERR(bdev)) {
++ dev_t devt;
++
++ /* We might not have rootfs mounted at this point. Try
++ to resolve the device name by other means. */
++
++ devt = name_to_dev_t(dev->devname);
++ if (devt)
++ bdev = blkdev_get_by_dev(devt, mode, dev);
++ }
++#endif
++
++ if (IS_ERR(bdev)) {
++ ERROR("error: cannot open device %s", dev->devname);
++ return 1;
++ }
++ dev->blkdev = bdev;
++
++ if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
++ ERROR("attempting to use an MTD device as a block device");
++ return 1;
++ }
++
++ return 0;
++}
++
++static void _close_bdev(struct block2mtd_dev *dev)
++{
++ struct block_device *bdev;
++
++ if (!dev->blkdev)
++ return;
++
++ bdev = dev->blkdev;
++ invalidate_mapping_pages(dev->blkdev->bd_inode->i_mapping, 0, -1);
++ blkdev_put(dev->blkdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
++ dev->blkdev = NULL;
++}
++
+ static void block2mtd_free_device(struct block2mtd_dev *dev)
+ {
+ if (!dev)
+ return;
+
+ kfree(dev->mtd.name);
+-
+- if (dev->blkdev) {
+- invalidate_mapping_pages(dev->blkdev->bd_inode->i_mapping,
+- 0, -1);
+- blkdev_put(dev->blkdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
+- }
+-
++ _close_bdev(dev);
+ kfree(dev);
+ }
+
+
+-/* FIXME: ensure that mtd->size % erase_size == 0 */
+-static struct block2mtd_dev *add_device(char *devname, int erase_size, const char *mtdname)
++static int block2mtd_refresh(struct mtd_info *mtd)
+ {
+- const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
++ struct block2mtd_dev *dev = mtd->priv;
+ struct block_device *bdev;
++ dev_t devt;
++ int err = 0;
++
++ /* no other mtd function can run at this point */
++ write_lock(&dev->bdev_mutex);
++
++ /* get the device number for the whole disk */
++ devt = MKDEV(MAJOR(dev->blkdev->bd_dev), 0);
++
++ /* close the old block device */
++ _close_bdev(dev);
++
++ /* open the whole disk, issue a partition rescan, then */
++ bdev = blkdev_get_by_dev(devt, FMODE_WRITE | FMODE_READ, mtd);
++ if (!bdev || !bdev->bd_disk)
++ err = -EINVAL;
++#ifndef CONFIG_MTD_BLOCK2MTD_MODULE
++ else
++ err = rescan_partitions(bdev->bd_disk, bdev);
++#endif
++ if (bdev)
++ blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
++
++ /* try to open the partition block device again */
++ _open_bdev(dev);
++ write_unlock(&dev->bdev_mutex);
++
++ return err;
++}
++
++/* FIXME: ensure that mtd->size % erase_size == 0 */
++static struct block2mtd_dev *add_device(char *devname, int erase_size, char *mtdname)
++{
+ struct block2mtd_dev *dev;
+ struct mtd_partition *part;
+ char *name;
+@@ -244,36 +357,17 @@ static struct block2mtd_dev *add_device(
+ if (!devname)
+ return NULL;
+
+- dev = kzalloc(sizeof(struct block2mtd_dev), GFP_KERNEL);
++ dev = kzalloc(sizeof(struct block2mtd_dev) + strlen(devname) + 1, GFP_KERNEL);
+ if (!dev)
+ return NULL;
+
+- /* Get a handle on the device */
+- bdev = blkdev_get_by_path(devname, mode, dev);
+-#ifndef MODULE
+- if (IS_ERR(bdev)) {
+-
+- /* We might not have rootfs mounted at this point. Try
+- to resolve the device name by other means. */
++ strcpy(dev->devname, devname);
+
+- dev_t devt = name_to_dev_t(devname);
+- if (devt)
+- bdev = blkdev_get_by_dev(devt, mode, dev);
+- }
+-#endif
+-
+- if (IS_ERR(bdev)) {
+- ERROR("error: cannot open device %s", devname);
++ if (_open_bdev(dev))
+ goto devinit_err;
+- }
+- dev->blkdev = bdev;
+-
+- if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
+- ERROR("attempting to use an MTD device as a block device");
+- goto devinit_err;
+- }
+
+ mutex_init(&dev->write_mutex);
++ rwlock_init(&dev->bdev_mutex);
+
+ /* Setup the MTD structure */
+ /* make the name contain the block device in */
+@@ -298,6 +392,7 @@ static struct block2mtd_dev *add_device(
+ dev->mtd.read = block2mtd_read;
+ dev->mtd.priv = dev;
+ dev->mtd.owner = THIS_MODULE;
++ dev->mtd.refresh_device = block2mtd_refresh;
+
+ part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
+ part->name = name;
diff --git a/target/linux/generic/patches-2.6.38/066-block2mtd_probe.patch b/target/linux/generic/patches-2.6.38/442-block2mtd_probe.patch
index 1afd2ff20a..780dd28fd2 100644
--- a/target/linux/generic/patches-2.6.38/066-block2mtd_probe.patch
+++ b/target/linux/generic/patches-2.6.38/442-block2mtd_probe.patch
@@ -1,10 +1,10 @@
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
-@@ -268,6 +268,7 @@ static int _open_bdev(struct block2mtd_d
+@@ -269,6 +269,7 @@ static int _open_bdev(struct block2mtd_d
/* We might not have rootfs mounted at this point. Try
to resolve the device name by other means. */
+ wait_for_device_probe();
- dev_t devt = name_to_dev_t(dev->devname);
+ devt = name_to_dev_t(dev->devname);
if (devt)
bdev = blkdev_get_by_dev(devt, mode, dev);
diff --git a/target/linux/generic/patches-2.6.38/080-mtd_plat_nand_chip_fixup.patch b/target/linux/generic/patches-2.6.38/450-mtd_plat_nand_chip_fixup.patch
index 8ad32a8aad..8ad32a8aad 100644
--- a/target/linux/generic/patches-2.6.38/080-mtd_plat_nand_chip_fixup.patch
+++ b/target/linux/generic/patches-2.6.38/450-mtd_plat_nand_chip_fixup.patch
diff --git a/target/linux/generic/patches-2.6.38/083-mtd_fix_nand_correct_data_return_code.patch b/target/linux/generic/patches-2.6.38/451-mtd_fix_nand_correct_data_return_code.patch
index f630059e87..f630059e87 100644
--- a/target/linux/generic/patches-2.6.38/083-mtd_fix_nand_correct_data_return_code.patch
+++ b/target/linux/generic/patches-2.6.38/451-mtd_fix_nand_correct_data_return_code.patch
diff --git a/target/linux/generic/patches-2.6.38/014-cfi_show_amd_extended_table_version.patch b/target/linux/generic/patches-2.6.38/460-cfi_show_amd_extended_table_version.patch
index 7111b2193c..7111b2193c 100644
--- a/target/linux/generic/patches-2.6.38/014-cfi_show_amd_extended_table_version.patch
+++ b/target/linux/generic/patches-2.6.38/460-cfi_show_amd_extended_table_version.patch
diff --git a/target/linux/generic/patches-2.6.38/084-mtd_m25p80_add_pm25lv_flash_support.patch b/target/linux/generic/patches-2.6.38/470-mtd_m25p80_add_pm25lv_flash_support.patch
index 91cdd9763e..91cdd9763e 100644
--- a/target/linux/generic/patches-2.6.38/084-mtd_m25p80_add_pm25lv_flash_support.patch
+++ b/target/linux/generic/patches-2.6.38/470-mtd_m25p80_add_pm25lv_flash_support.patch
diff --git a/target/linux/generic/patches-2.6.38/090-mtd-m25p80-add-en25f32-chip-support.patch b/target/linux/generic/patches-2.6.38/471-mtd_m25p80_add_en25f32_chip_support.patch
index d0b3496222..d0b3496222 100644
--- a/target/linux/generic/patches-2.6.38/090-mtd-m25p80-add-en25f32-chip-support.patch
+++ b/target/linux/generic/patches-2.6.38/471-mtd_m25p80_add_en25f32_chip_support.patch
diff --git a/target/linux/generic/patches-2.6.38/091-mtd-m25p80-add-MX25L1606E-support.patch b/target/linux/generic/patches-2.6.38/472-mtd_m25p80_add_MX25L1606E_support.patch
index b5937a3557..b5937a3557 100644
--- a/target/linux/generic/patches-2.6.38/091-mtd-m25p80-add-MX25L1606E-support.patch
+++ b/target/linux/generic/patches-2.6.38/472-mtd_m25p80_add_MX25L1606E_support.patch
diff --git a/target/linux/generic/patches-2.6.38/510-yaffs_support.patch b/target/linux/generic/patches-2.6.38/500-yaffs_support.patch
index e7c87b8b13..e7c87b8b13 100644
--- a/target/linux/generic/patches-2.6.38/510-yaffs_support.patch
+++ b/target/linux/generic/patches-2.6.38/500-yaffs_support.patch
diff --git a/target/linux/generic/patches-2.6.38/511-yaffs-cvs-2009-04-24.patch b/target/linux/generic/patches-2.6.38/501-yaffs_cvs_2009_04_24.patch
index 5c70e79a05..5c70e79a05 100644
--- a/target/linux/generic/patches-2.6.38/511-yaffs-cvs-2009-04-24.patch
+++ b/target/linux/generic/patches-2.6.38/501-yaffs_cvs_2009_04_24.patch
diff --git a/target/linux/generic/patches-2.6.38/511-yaffs-git-2010-10-20.patch b/target/linux/generic/patches-2.6.38/502-yaffs_git_2010_10_20.patch
index f5e7fff6e6..f26ecf5425 100644
--- a/target/linux/generic/patches-2.6.38/511-yaffs-git-2010-10-20.patch
+++ b/target/linux/generic/patches-2.6.38/502-yaffs_git_2010_10_20.patch
@@ -8,7 +8,7 @@
endif # BLOCK
-@@ -176,6 +175,10 @@ source "fs/hfsplus/Kconfig"
+@@ -177,6 +176,10 @@ source "fs/hfsplus/Kconfig"
source "fs/befs/Kconfig"
source "fs/bfs/Kconfig"
source "fs/efs/Kconfig"
diff --git a/target/linux/generic/patches-2.6.38/512-yaffs_symlink_bug.patch b/target/linux/generic/patches-2.6.38/503-yaffs_symlink_bug.patch
index dabf2871bf..dabf2871bf 100644
--- a/target/linux/generic/patches-2.6.38/512-yaffs_symlink_bug.patch
+++ b/target/linux/generic/patches-2.6.38/503-yaffs_symlink_bug.patch
diff --git a/target/linux/generic/patches-2.6.38/513-yaffs_mutex_fix.patch b/target/linux/generic/patches-2.6.38/504-yaffs_mutex_fix.patch
index b34b12f785..b34b12f785 100644
--- a/target/linux/generic/patches-2.6.38/513-yaffs_mutex_fix.patch
+++ b/target/linux/generic/patches-2.6.38/504-yaffs_mutex_fix.patch
diff --git a/target/linux/generic/patches-2.6.38/008-jffs2_make_lzma_available.patch b/target/linux/generic/patches-2.6.38/510-jffs2_make_lzma_available.patch
index e594039bf6..e594039bf6 100644
--- a/target/linux/generic/patches-2.6.38/008-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/patches-2.6.38/510-jffs2_make_lzma_available.patch
diff --git a/target/linux/generic/patches-2.6.38/010-debloat_lzma.patch b/target/linux/generic/patches-2.6.38/511-debloat_lzma.patch
index 18e4a51ee3..18e4a51ee3 100644
--- a/target/linux/generic/patches-2.6.38/010-debloat_lzma.patch
+++ b/target/linux/generic/patches-2.6.38/511-debloat_lzma.patch
diff --git a/target/linux/generic/patches-2.6.38/204-jffs2_eofdetect.patch b/target/linux/generic/patches-2.6.38/512-jffs2_eofdetect.patch
index eaf9489d35..eaf9489d35 100644
--- a/target/linux/generic/patches-2.6.38/204-jffs2_eofdetect.patch
+++ b/target/linux/generic/patches-2.6.38/512-jffs2_eofdetect.patch
diff --git a/target/linux/generic/patches-2.6.38/100-netfilter_layer7_2.22.patch b/target/linux/generic/patches-2.6.38/600-netfilter_layer7_2.22.patch
index 58732b8ffd..b47f05c4c7 100644
--- a/target/linux/generic/patches-2.6.38/100-netfilter_layer7_2.22.patch
+++ b/target/linux/generic/patches-2.6.38/600-netfilter_layer7_2.22.patch
@@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -948,6 +948,27 @@ config NETFILTER_XT_MATCH_STATE
+@@ -946,6 +946,27 @@ config NETFILTER_XT_MATCH_STATE
To compile it as a module, choose M here. If unsure, say N.
diff --git a/target/linux/generic/patches-2.6.38/101-netfilter_layer7_pktmatch.patch b/target/linux/generic/patches-2.6.38/601-netfilter_layer7_pktmatch.patch
index f65e301fd1..f65e301fd1 100644
--- a/target/linux/generic/patches-2.6.38/101-netfilter_layer7_pktmatch.patch
+++ b/target/linux/generic/patches-2.6.38/601-netfilter_layer7_pktmatch.patch
diff --git a/target/linux/generic/patches-2.6.38/102-netfilter_layer7_match.patch b/target/linux/generic/patches-2.6.38/602-netfilter_layer7_match.patch
index b2e48c824f..b2e48c824f 100644
--- a/target/linux/generic/patches-2.6.38/102-netfilter_layer7_match.patch
+++ b/target/linux/generic/patches-2.6.38/602-netfilter_layer7_match.patch
diff --git a/target/linux/generic/patches-2.6.38/103-netfilter_layer7_2.6.36_fix.patch b/target/linux/generic/patches-2.6.38/603-netfilter_layer7_2.6.36_fix.patch
index 1082da5b67..14c5cc6982 100644
--- a/target/linux/generic/patches-2.6.38/103-netfilter_layer7_2.6.36_fix.patch
+++ b/target/linux/generic/patches-2.6.38/603-netfilter_layer7_2.6.36_fix.patch
@@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -762,6 +762,27 @@ config NETFILTER_XT_MATCH_IPVS
+@@ -760,6 +760,27 @@ config NETFILTER_XT_MATCH_IPVS
If unsure, say N.
@@ -28,7 +28,7 @@
config NETFILTER_XT_MATCH_LENGTH
tristate '"length" match support'
depends on NETFILTER_ADVANCED
-@@ -948,26 +969,11 @@ config NETFILTER_XT_MATCH_STATE
+@@ -946,26 +967,11 @@ config NETFILTER_XT_MATCH_STATE
To compile it as a module, choose M here. If unsure, say N.
diff --git a/target/linux/generic/patches-2.6.38/160-netfilter_cisco_794x_iphone.patch b/target/linux/generic/patches-2.6.38/604-netfilter_cisco_794x_iphone.patch
index 662a499d17..662a499d17 100644
--- a/target/linux/generic/patches-2.6.38/160-netfilter_cisco_794x_iphone.patch
+++ b/target/linux/generic/patches-2.6.38/604-netfilter_cisco_794x_iphone.patch
diff --git a/target/linux/generic/patches-2.6.38/190-netfilter_rtsp.patch b/target/linux/generic/patches-2.6.38/605-netfilter_rtsp.patch
index 7f1a9d80d4..7f1a9d80d4 100644
--- a/target/linux/generic/patches-2.6.38/190-netfilter_rtsp.patch
+++ b/target/linux/generic/patches-2.6.38/605-netfilter_rtsp.patch
diff --git a/target/linux/generic/patches-2.6.38/200-sched_esfq.patch b/target/linux/generic/patches-2.6.38/620-sched_esfq.patch
index 8a648ecc4d..8a648ecc4d 100644
--- a/target/linux/generic/patches-2.6.38/200-sched_esfq.patch
+++ b/target/linux/generic/patches-2.6.38/620-sched_esfq.patch
diff --git a/target/linux/generic/patches-2.6.38/290-sched_act_connmark.patch b/target/linux/generic/patches-2.6.38/621-sched_act_connmark.patch
index 33429cb430..33429cb430 100644
--- a/target/linux/generic/patches-2.6.38/290-sched_act_connmark.patch
+++ b/target/linux/generic/patches-2.6.38/621-sched_act_connmark.patch
diff --git a/target/linux/generic/patches-2.6.38/240-packet_socket_type.patch b/target/linux/generic/patches-2.6.38/630-packet_socket_type.patch
index a8ad9171ec..a8ad9171ec 100644
--- a/target/linux/generic/patches-2.6.38/240-packet_socket_type.patch
+++ b/target/linux/generic/patches-2.6.38/630-packet_socket_type.patch
diff --git a/target/linux/generic/patches-2.6.38/270-bridge_no_eap_forward.patch b/target/linux/generic/patches-2.6.38/640-bridge_no_eap_forward.patch
index dac898276d..dac898276d 100644
--- a/target/linux/generic/patches-2.6.38/270-bridge_no_eap_forward.patch
+++ b/target/linux/generic/patches-2.6.38/640-bridge_no_eap_forward.patch
diff --git a/target/linux/generic/patches-2.6.38/271-bridge_always_accept_eap.patch b/target/linux/generic/patches-2.6.38/641-bridge_always_accept_eap.patch
index b3a793e49b..b3a793e49b 100644
--- a/target/linux/generic/patches-2.6.38/271-bridge_always_accept_eap.patch
+++ b/target/linux/generic/patches-2.6.38/641-bridge_always_accept_eap.patch
diff --git a/target/linux/generic/patches-2.6.38/300-bridge_port_isolate.patch b/target/linux/generic/patches-2.6.38/642-bridge_port_isolate.patch
index c051a29f2d..c051a29f2d 100644
--- a/target/linux/generic/patches-2.6.38/300-bridge_port_isolate.patch
+++ b/target/linux/generic/patches-2.6.38/642-bridge_port_isolate.patch
diff --git a/target/linux/generic/patches-2.6.38/250-pppoe_header_pad.patch b/target/linux/generic/patches-2.6.38/650-pppoe_header_pad.patch
index 4875d5f23f..4875d5f23f 100644
--- a/target/linux/generic/patches-2.6.38/250-pppoe_header_pad.patch
+++ b/target/linux/generic/patches-2.6.38/650-pppoe_header_pad.patch
diff --git a/target/linux/generic/patches-2.6.38/940-wireless_mesh_header.patch b/target/linux/generic/patches-2.6.38/651-wireless_mesh_header.patch
index 271f8e3591..271f8e3591 100644
--- a/target/linux/generic/patches-2.6.38/940-wireless_mesh_header.patch
+++ b/target/linux/generic/patches-2.6.38/651-wireless_mesh_header.patch
diff --git a/target/linux/generic/patches-2.6.38/650-swconfig.patch b/target/linux/generic/patches-2.6.38/700-swconfig.patch
index 6825037ce9..6825037ce9 100644
--- a/target/linux/generic/patches-2.6.38/650-swconfig.patch
+++ b/target/linux/generic/patches-2.6.38/700-swconfig.patch
diff --git a/target/linux/generic/patches-2.6.38/600-phy_extension.patch b/target/linux/generic/patches-2.6.38/701-phy_extension.patch
index a0624d849e..a0624d849e 100644
--- a/target/linux/generic/patches-2.6.38/600-phy_extension.patch
+++ b/target/linux/generic/patches-2.6.38/701-phy_extension.patch
diff --git a/target/linux/generic/patches-2.6.38/601-phy-add-aneg-done-function.patch b/target/linux/generic/patches-2.6.38/702-phy_add_aneg_done_function.patch
index f37baad729..f37baad729 100644
--- a/target/linux/generic/patches-2.6.38/601-phy-add-aneg-done-function.patch
+++ b/target/linux/generic/patches-2.6.38/702-phy_add_aneg_done_function.patch
diff --git a/target/linux/generic/patches-2.6.38/620-phy_adm6996.patch b/target/linux/generic/patches-2.6.38/720-phy_adm6996.patch
index bd387d1bc7..8e0ef559a8 100644
--- a/target/linux/generic/patches-2.6.38/620-phy_adm6996.patch
+++ b/target/linux/generic/patches-2.6.38/720-phy_adm6996.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -92,6 +92,11 @@ config MICREL_PHY
+@@ -98,6 +98,11 @@ config MICREL_PHY
---help---
Supports the KSZ9021, VSC8201, KS8001 PHYs.
@@ -14,7 +14,7 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
-@@ -13,6 +13,7 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
+@@ -14,6 +14,7 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
diff --git a/target/linux/generic/patches-2.6.38/630-phy_packets.patch b/target/linux/generic/patches-2.6.38/721-phy_packets.patch
index 640a19bb00..640a19bb00 100644
--- a/target/linux/generic/patches-2.6.38/630-phy_packets.patch
+++ b/target/linux/generic/patches-2.6.38/721-phy_packets.patch
diff --git a/target/linux/generic/patches-2.6.38/660-phy_mvswitch.patch b/target/linux/generic/patches-2.6.38/722-phy_mvswitch.patch
index 00950dc637..00950dc637 100644
--- a/target/linux/generic/patches-2.6.38/660-phy_mvswitch.patch
+++ b/target/linux/generic/patches-2.6.38/722-phy_mvswitch.patch
diff --git a/target/linux/generic/patches-2.6.38/670-phy_ip175c.patch b/target/linux/generic/patches-2.6.38/723-phy_ip175c.patch
index 0af080bc9b..0af080bc9b 100644
--- a/target/linux/generic/patches-2.6.38/670-phy_ip175c.patch
+++ b/target/linux/generic/patches-2.6.38/723-phy_ip175c.patch
diff --git a/target/linux/generic/patches-2.6.38/680-phy_ar8216.patch b/target/linux/generic/patches-2.6.38/724-phy_ar8216.patch
index e532b3cca9..e532b3cca9 100644
--- a/target/linux/generic/patches-2.6.38/680-phy_ar8216.patch
+++ b/target/linux/generic/patches-2.6.38/724-phy_ar8216.patch
diff --git a/target/linux/generic/patches-2.6.38/690-phy_rtl8306.patch b/target/linux/generic/patches-2.6.38/725-phy_rtl8306.patch
index 5a527b1863..5a527b1863 100644
--- a/target/linux/generic/patches-2.6.38/690-phy_rtl8306.patch
+++ b/target/linux/generic/patches-2.6.38/725-phy_rtl8306.patch
diff --git a/target/linux/generic/patches-2.6.38/691-phy_rtl8366.patch b/target/linux/generic/patches-2.6.38/726-phy_rtl8366.patch
index fdfeb54335..fdfeb54335 100644
--- a/target/linux/generic/patches-2.6.38/691-phy_rtl8366.patch
+++ b/target/linux/generic/patches-2.6.38/726-phy_rtl8366.patch
diff --git a/target/linux/generic/patches-2.6.38/903-hostap_txpower.patch b/target/linux/generic/patches-2.6.38/750-hostap_txpower.patch
index e4c1803ff5..e4c1803ff5 100644
--- a/target/linux/generic/patches-2.6.38/903-hostap_txpower.patch
+++ b/target/linux/generic/patches-2.6.38/750-hostap_txpower.patch
diff --git a/target/linux/generic/patches-2.6.38/030-pci_disable_common_quirks.patch b/target/linux/generic/patches-2.6.38/810-pci_disable_common_quirks.patch
index b81ab74dce..c947836166 100644
--- a/target/linux/generic/patches-2.6.38/030-pci_disable_common_quirks.patch
+++ b/target/linux/generic/patches-2.6.38/810-pci_disable_common_quirks.patch
@@ -1,7 +1,5 @@
-Index: linux-2.6.38.1/drivers/pci/Kconfig
-===================================================================
---- linux-2.6.38.1.orig/drivers/pci/Kconfig 2011-03-23 21:04:47.000000000 +0100
-+++ linux-2.6.38.1/drivers/pci/Kconfig 2011-03-28 16:48:00.052118712 +0200
+--- a/drivers/pci/Kconfig
++++ b/drivers/pci/Kconfig
@@ -62,6 +62,12 @@ config XEN_PCIDEV_FE_DEBUG
When in doubt, say N.
@@ -15,10 +13,8 @@ Index: linux-2.6.38.1/drivers/pci/Kconfig
config HT_IRQ
bool "Interrupts on hypertransport devices"
default y
-Index: linux-2.6.38.1/drivers/pci/quirks.c
-===================================================================
---- linux-2.6.38.1.orig/drivers/pci/quirks.c 2011-03-23 21:04:47.000000000 +0100
-+++ linux-2.6.38.1/drivers/pci/quirks.c 2011-03-28 16:48:13.130041612 +0200
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
@@ -104,6 +104,7 @@ static void __devinit quirk_mmio_always_
}
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, quirk_mmio_always_on);
diff --git a/target/linux/generic/patches-2.6.38/031-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-2.6.38/811-pci_disable_usb_common_quirks.patch
index e1efe9cc39..e1efe9cc39 100644
--- a/target/linux/generic/patches-2.6.38/031-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/patches-2.6.38/811-pci_disable_usb_common_quirks.patch
diff --git a/target/linux/generic/patches-2.6.38/310-usb-add-usb_find_device_by_name.patch b/target/linux/generic/patches-2.6.38/820-usb_add_usb_find_device_by_name.patch
index d225150c90..d225150c90 100644
--- a/target/linux/generic/patches-2.6.38/310-usb-add-usb_find_device_by_name.patch
+++ b/target/linux/generic/patches-2.6.38/820-usb_add_usb_find_device_by_name.patch
diff --git a/target/linux/generic/patches-2.6.38/801-usb_serial_endpoint_size.patch b/target/linux/generic/patches-2.6.38/821-usb_serial_endpoint_size.patch
index 726dc7dd53..3dd419f2ae 100644
--- a/target/linux/generic/patches-2.6.38/801-usb_serial_endpoint_size.patch
+++ b/target/linux/generic/patches-2.6.38/821-usb_serial_endpoint_size.patch
@@ -1,7 +1,5 @@
-Index: linux-2.6.38.1/drivers/usb/serial/usb-serial.c
-===================================================================
---- linux-2.6.38.1.orig/drivers/usb/serial/usb-serial.c 2011-03-23 21:04:47.000000000 +0100
-+++ linux-2.6.38.1/drivers/usb/serial/usb-serial.c 2011-03-28 16:58:26.673254994 +0200
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
@@ -61,6 +61,7 @@ static struct usb_driver usb_serial_driv
drivers depend on it.
*/
diff --git a/target/linux/generic/patches-2.6.38/400-ledtrig_morse.patch b/target/linux/generic/patches-2.6.38/830-ledtrig_morse.patch
index 62a90a4591..62a90a4591 100644
--- a/target/linux/generic/patches-2.6.38/400-ledtrig_morse.patch
+++ b/target/linux/generic/patches-2.6.38/830-ledtrig_morse.patch
diff --git a/target/linux/generic/patches-2.6.38/402-ledtrig_netdev.patch b/target/linux/generic/patches-2.6.38/831-ledtrig_netdev.patch
index 5354aa187b..5354aa187b 100644
--- a/target/linux/generic/patches-2.6.38/402-ledtrig_netdev.patch
+++ b/target/linux/generic/patches-2.6.38/831-ledtrig_netdev.patch
diff --git a/target/linux/generic/patches-2.6.38/403-ledtrig-usbdev.patch b/target/linux/generic/patches-2.6.38/832-ledtrig_usbdev.patch
index 25c6745f68..25c6745f68 100644
--- a/target/linux/generic/patches-2.6.38/403-ledtrig-usbdev.patch
+++ b/target/linux/generic/patches-2.6.38/832-ledtrig_usbdev.patch
diff --git a/target/linux/generic/patches-2.6.38/410-gpio_buttons.patch b/target/linux/generic/patches-2.6.38/833-gpio_buttons.patch
index 23fa95319b..23fa95319b 100644
--- a/target/linux/generic/patches-2.6.38/410-gpio_buttons.patch
+++ b/target/linux/generic/patches-2.6.38/833-gpio_buttons.patch
diff --git a/target/linux/generic/patches-2.6.38/411-gpio_ioctl.patch b/target/linux/generic/patches-2.6.38/834-gpio_ioctl.patch
index 6609a1670a..6609a1670a 100644
--- a/target/linux/generic/patches-2.6.38/411-gpio_ioctl.patch
+++ b/target/linux/generic/patches-2.6.38/834-gpio_ioctl.patch
diff --git a/target/linux/generic/patches-2.6.38/420-gpiodev.patch b/target/linux/generic/patches-2.6.38/835-gpiodev.patch
index 900358e6b0..900358e6b0 100644
--- a/target/linux/generic/patches-2.6.38/420-gpiodev.patch
+++ b/target/linux/generic/patches-2.6.38/835-gpiodev.patch
diff --git a/target/linux/generic/patches-2.6.38/700-rtc7301.patch b/target/linux/generic/patches-2.6.38/840-rtc7301.patch
index 2cc7b03fb6..2cc7b03fb6 100644
--- a/target/linux/generic/patches-2.6.38/700-rtc7301.patch
+++ b/target/linux/generic/patches-2.6.38/840-rtc7301.patch
diff --git a/target/linux/generic/patches-2.6.38/750-glamo-headers.patch b/target/linux/generic/patches-2.6.38/850-glamo_headers.patch
index f3cf973651..f3cf973651 100644
--- a/target/linux/generic/patches-2.6.38/750-glamo-headers.patch
+++ b/target/linux/generic/patches-2.6.38/850-glamo_headers.patch
diff --git a/target/linux/generic/patches-2.6.38/920-01-hotpluggable-spi-gpio.patch b/target/linux/generic/patches-2.6.38/860-01_hotpluggable_spi_gpio.patch
index f8e6374fa7..f8e6374fa7 100644
--- a/target/linux/generic/patches-2.6.38/920-01-hotpluggable-spi-gpio.patch
+++ b/target/linux/generic/patches-2.6.38/860-01_hotpluggable_spi_gpio.patch
diff --git a/target/linux/generic/patches-2.6.38/920-04-spi-gpio-implement-spi-delay.patch b/target/linux/generic/patches-2.6.38/861-04_spi_gpio_implement_spi_delay.patch
index 4b145c2734..4b145c2734 100644
--- a/target/linux/generic/patches-2.6.38/920-04-spi-gpio-implement-spi-delay.patch
+++ b/target/linux/generic/patches-2.6.38/861-04_spi_gpio_implement_spi_delay.patch
diff --git a/target/linux/generic/patches-2.6.38/921-gpio_spi_driver.patch b/target/linux/generic/patches-2.6.38/862-gpio_spi_driver.patch
index 3d85069566..3d85069566 100644
--- a/target/linux/generic/patches-2.6.38/921-gpio_spi_driver.patch
+++ b/target/linux/generic/patches-2.6.38/862-gpio_spi_driver.patch
diff --git a/target/linux/generic/patches-2.6.38/922-gpiommc.patch b/target/linux/generic/patches-2.6.38/863-gpiommc.patch
index a959b978cb..a959b978cb 100644
--- a/target/linux/generic/patches-2.6.38/922-gpiommc.patch
+++ b/target/linux/generic/patches-2.6.38/863-gpiommc.patch
diff --git a/target/linux/generic/patches-2.6.38/923-gpiommc-configfs-locking.patch b/target/linux/generic/patches-2.6.38/864-gpiommc_configfs_locking.patch
index 2e4e820b2b..2e4e820b2b 100644
--- a/target/linux/generic/patches-2.6.38/923-gpiommc-configfs-locking.patch
+++ b/target/linux/generic/patches-2.6.38/864-gpiommc_configfs_locking.patch
diff --git a/target/linux/generic/patches-2.6.38/975-hifn795x-byteswap.patch b/target/linux/generic/patches-2.6.38/870-hifn795x_byteswap.patch
index 3a37c951ec..3a37c951ec 100644
--- a/target/linux/generic/patches-2.6.38/975-hifn795x-byteswap.patch
+++ b/target/linux/generic/patches-2.6.38/870-hifn795x_byteswap.patch
diff --git a/target/linux/generic/patches-2.6.38/203-slab_maxsize.patch b/target/linux/generic/patches-2.6.38/900-slab_maxsize.patch
index 55e2516a69..55e2516a69 100644
--- a/target/linux/generic/patches-2.6.38/203-slab_maxsize.patch
+++ b/target/linux/generic/patches-2.6.38/900-slab_maxsize.patch
diff --git a/target/linux/generic/patches-2.6.38/219-kobject_uevent.patch b/target/linux/generic/patches-2.6.38/910-kobject_uevent.patch
index f15749fa17..f15749fa17 100644
--- a/target/linux/generic/patches-2.6.38/219-kobject_uevent.patch
+++ b/target/linux/generic/patches-2.6.38/910-kobject_uevent.patch
diff --git a/target/linux/generic/patches-2.6.38/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.38/911-kobject_add_broadcast_uevent.patch
index b3e4b6e7c7..b3e4b6e7c7 100644
--- a/target/linux/generic/patches-2.6.38/223-kobject-add-broadcast_uevent.patch
+++ b/target/linux/generic/patches-2.6.38/911-kobject_add_broadcast_uevent.patch
diff --git a/target/linux/generic/patches-2.6.38/840-unable_to_open_console.patch b/target/linux/generic/patches-2.6.38/920-unable_to_open_console.patch
index 767f777d1d..767f777d1d 100644
--- a/target/linux/generic/patches-2.6.38/840-unable_to_open_console.patch
+++ b/target/linux/generic/patches-2.6.38/920-unable_to_open_console.patch
diff --git a/target/linux/generic/patches-2.6.38/999-use_preinit_as_init.patch b/target/linux/generic/patches-2.6.38/921-use_preinit_as_init.patch
index d46c13b334..d46c13b334 100644
--- a/target/linux/generic/patches-2.6.38/999-use_preinit_as_init.patch
+++ b/target/linux/generic/patches-2.6.38/921-use_preinit_as_init.patch
diff --git a/target/linux/generic/patches-2.6.38/970-ocf_kbuild_integration.patch b/target/linux/generic/patches-2.6.38/940-ocf_kbuild_integration.patch
index 3c322f3d14..3c322f3d14 100644
--- a/target/linux/generic/patches-2.6.38/970-ocf_kbuild_integration.patch
+++ b/target/linux/generic/patches-2.6.38/940-ocf_kbuild_integration.patch
diff --git a/target/linux/generic/patches-2.6.38/971-ocf_20100325.patch b/target/linux/generic/patches-2.6.38/941-ocf_20100325.patch
index a1c088a9a8..a1c088a9a8 100644
--- a/target/linux/generic/patches-2.6.38/971-ocf_20100325.patch
+++ b/target/linux/generic/patches-2.6.38/941-ocf_20100325.patch
diff --git a/target/linux/generic/patches-2.6.38/980-vm_exports.patch b/target/linux/generic/patches-2.6.38/950-vm_exports.patch
index 05f1b4da32..d23ce2ce13 100644
--- a/target/linux/generic/patches-2.6.38/980-vm_exports.patch
+++ b/target/linux/generic/patches-2.6.38/950-vm_exports.patch
@@ -1,7 +1,5 @@
-Index: linux-2.6.38.2/mm/shmem.c
-===================================================================
---- linux-2.6.38.2.orig/mm/shmem.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/mm/shmem.c 2011-03-30 18:44:41.068346925 +0200
+--- a/mm/shmem.c
++++ b/mm/shmem.c
@@ -2710,6 +2710,16 @@ out:
/* common code */
@@ -32,10 +30,8 @@ Index: linux-2.6.38.2/mm/shmem.c
+
return 0;
}
-Index: linux-2.6.38.2/fs/file.c
-===================================================================
---- linux-2.6.38.2.orig/fs/file.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/fs/file.c 2011-03-28 22:44:57.267151662 +0200
+--- a/fs/file.c
++++ b/fs/file.c
@@ -264,6 +264,7 @@ int expand_files(struct files_struct *fi
/* All good, so we try */
return expand_fdtable(files, nr);
@@ -44,10 +40,8 @@ Index: linux-2.6.38.2/fs/file.c
static int count_open_files(struct fdtable *fdt)
{
-Index: linux-2.6.38.2/kernel/exit.c
-===================================================================
---- linux-2.6.38.2.orig/kernel/exit.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/kernel/exit.c 2011-03-28 22:44:57.269151650 +0200
+--- a/kernel/exit.c
++++ b/kernel/exit.c
@@ -513,6 +513,7 @@ struct files_struct *get_files_struct(st
return files;
@@ -64,10 +58,8 @@ Index: linux-2.6.38.2/kernel/exit.c
void reset_files_struct(struct files_struct *files)
{
-Index: linux-2.6.38.2/kernel/fork.c
-===================================================================
---- linux-2.6.38.2.orig/kernel/fork.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/kernel/fork.c 2011-03-28 22:44:57.270151644 +0200
+--- a/kernel/fork.c
++++ b/kernel/fork.c
@@ -193,6 +193,7 @@ void __put_task_struct(struct task_struc
if (!profile_handoff_task(tsk))
free_task(tsk);
@@ -76,10 +68,8 @@ Index: linux-2.6.38.2/kernel/fork.c
/*
* macro override instead of weak attribute alias, to workaround
-Index: linux-2.6.38.2/kernel/sched.c
-===================================================================
---- linux-2.6.38.2.orig/kernel/sched.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/kernel/sched.c 2011-03-28 22:44:57.274151620 +0200
+--- a/kernel/sched.c
++++ b/kernel/sched.c
@@ -4641,6 +4641,7 @@ int can_nice(const struct task_struct *p
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
capable(CAP_SYS_NICE));
@@ -88,10 +78,8 @@ Index: linux-2.6.38.2/kernel/sched.c
#ifdef __ARCH_WANT_SYS_NICE
-Index: linux-2.6.38.2/mm/memory.c
-===================================================================
---- linux-2.6.38.2.orig/mm/memory.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/mm/memory.c 2011-03-28 22:44:57.277151603 +0200
+--- a/mm/memory.c
++++ b/mm/memory.c
@@ -1229,6 +1229,7 @@ unsigned long zap_page_range(struct vm_a
tlb_finish_mmu(tlb, address, end);
return end;
@@ -108,10 +96,8 @@ Index: linux-2.6.38.2/mm/memory.c
/*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
-Index: linux-2.6.38.2/mm/vmalloc.c
-===================================================================
---- linux-2.6.38.2.orig/mm/vmalloc.c 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/mm/vmalloc.c 2011-03-28 22:44:57.278151598 +0200
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
@@ -1193,6 +1193,7 @@ void unmap_kernel_range(unsigned long ad
vunmap_page_range(addr, end);
flush_tlb_kernel_range(addr, end);
@@ -128,10 +114,8 @@ Index: linux-2.6.38.2/mm/vmalloc.c
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
void *caller)
-Index: linux-2.6.38.2/include/linux/mm.h
-===================================================================
---- linux-2.6.38.2.orig/include/linux/mm.h 2011-03-27 20:37:20.000000000 +0200
-+++ linux-2.6.38.2/include/linux/mm.h 2011-03-28 22:44:57.279151592 +0200
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
@@ -863,6 +863,7 @@ extern void show_free_areas(void);
int shmem_lock(struct file *file, int lock, struct user_struct *user);
diff --git a/target/linux/generic/patches-2.6.38/009-decompress_unlzo_fix.patch b/target/linux/generic/patches-2.6.38/960-decompress_unlzo_fix.patch
index ee7c118ef0..ee7c118ef0 100644
--- a/target/linux/generic/patches-2.6.38/009-decompress_unlzo_fix.patch
+++ b/target/linux/generic/patches-2.6.38/960-decompress_unlzo_fix.patch