aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-04-16 18:31:05 +0000
committerFelix Fietkau <nbd@openwrt.org>2011-04-16 18:31:05 +0000
commitc19a05ddc769a8b14837218fea04fe8b5c887eee (patch)
treed0285c3b8b16f40ed39ca88a77e257f6443ecb57 /target
parent80a4ffa1e2bc5f3ef893251babb2371c502f04ad (diff)
downloadmaster-187ad058-c19a05ddc769a8b14837218fea04fe8b5c887eee.tar.gz
master-187ad058-c19a05ddc769a8b14837218fea04fe8b5c887eee.tar.bz2
master-187ad058-c19a05ddc769a8b14837218fea04fe8b5c887eee.zip
kernel: reorganize 2.6.39 patches
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26691 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/generic/patches-2.6.39/067-block2mtd_2.6.38_fix.patch35
-rw-r--r--target/linux/generic/patches-2.6.39/100-overlayfs.patch (renamed from target/linux/generic/patches-2.6.39/209-overlayfs.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/200-fix_localversion.patch (renamed from target/linux/generic/patches-2.6.39/001-fix_localversion.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/201-extra_optimization.patch (renamed from target/linux/generic/patches-2.6.39/012-extra_optimization.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/210-darwin_scripts_include.patch (renamed from target/linux/generic/patches-2.6.39/902-darwin_scripts_include.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/211-stddef_include.patch (renamed from target/linux/generic/patches-2.6.39/903-stddef_include.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/220-module_exports.patch (renamed from target/linux/generic/patches-2.6.39/028-module_exports.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch (renamed from target/linux/generic/patches-2.6.39/998-openwrt_lzma_options.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/250-netfilter_depends.patch (renamed from target/linux/generic/patches-2.6.39/180-netfilter_depends.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/251-sound_kconfig.patch (renamed from target/linux/generic/patches-2.6.39/220-sound_kconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/252-mv_cesa_depends.patch (renamed from target/linux/generic/patches-2.6.39/972-mv_cesa_depends.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/253-ssb_b43_default_on.patch (renamed from target/linux/generic/patches-2.6.39/974-ssb_b43_default_on.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/254-textsearch_kconfig_hacks.patch (renamed from target/linux/generic/patches-2.6.39/977-textsearch_kconfig_hacks.patch)2
-rw-r--r--target/linux/generic/patches-2.6.39/255-lib80211_kconfig_hacks.patch (renamed from target/linux/generic/patches-2.6.39/978-lib80211_kconfig_hacks.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/256-crypto_add_kconfig_prompts.patch (renamed from target/linux/generic/patches-2.6.39/979-crypto_add_kconfig_prompts.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/257-wireless_ext_kconfig_hack.patch (renamed from target/linux/generic/patches-2.6.39/981-wireless_ext_kconfig_hack.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch (renamed from target/linux/generic/patches-2.6.39/011-mips_expose_boot_raw.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/301-mips_image_cmdline_hack.patch (renamed from target/linux/generic/patches-2.6.39/021-mips_image_cmdline_hack.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/302-mips_use_generic_thread_info_allocator.patch (renamed from target/linux/generic/patches-2.6.39/022-mips_use_generic_thread_info_allocator.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/303-mips_fix_kexec.patch (renamed from target/linux/generic/patches-2.6.39/023-mips-fix-kexec.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/304-mips_disable_fpu.patch (renamed from target/linux/generic/patches-2.6.39/025-mips_disable_fpu.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/305-mips_module_reloc.patch (renamed from target/linux/generic/patches-2.6.39/027-mips_module_reloc.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch (renamed from target/linux/generic/patches-2.6.39/202-mips_mem_functions_performance.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/307-mips_oprofile_fix.patch (renamed from target/linux/generic/patches-2.6.39/208-mips_oprofile_fix.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/310-arm_module_unresolved_weak_sym.patch (renamed from target/linux/generic/patches-2.6.39/029-arm_module_unresolved_weak_sym.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/320-ppc4xx_optimization.patch (renamed from target/linux/generic/patches-2.6.39/991-ppc4xx_optimization.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/321-powerpc_crtsavres_prereq.patch (renamed from target/linux/generic/patches-2.6.39/950-powerpc_crtsavres_prereq.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/400-rootfs_split.patch (renamed from target/linux/generic/patches-2.6.39/065-rootfs_split.patch)290
-rw-r--r--target/linux/generic/patches-2.6.39/401-partial_eraseblock_write.patch (renamed from target/linux/generic/patches-2.6.39/222-partial_eraseblock_write.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/410-mtd_info_move_forward_decl.patch (renamed from target/linux/generic/patches-2.6.39/082-mtd_info_move_forward_decl.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/420-redboot_space.patch (renamed from target/linux/generic/patches-2.6.39/070-redboot_space.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/421-redboot_boardconfig.patch (renamed from target/linux/generic/patches-2.6.39/071-redboot_boardconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/430-mtd_myloader_partition_parser.patch (renamed from target/linux/generic/patches-2.6.39/081-mtd_myloader_partition_parser.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/440-block2mtd_init.patch (renamed from target/linux/generic/patches-2.6.39/060-block2mtd_init.patch)2
-rw-r--r--target/linux/generic/patches-2.6.39/441-block2mtd_refresh.patch291
-rw-r--r--target/linux/generic/patches-2.6.39/442-block2mtd_probe.patch (renamed from target/linux/generic/patches-2.6.39/066-block2mtd_probe.patch)4
-rw-r--r--target/linux/generic/patches-2.6.39/450-mtd_plat_nand_chip_fixup.patch (renamed from target/linux/generic/patches-2.6.39/080-mtd_plat_nand_chip_fixup.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/451-mtd_fix_nand_correct_data_return_code.patch (renamed from target/linux/generic/patches-2.6.39/083-mtd_fix_nand_correct_data_return_code.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch (renamed from target/linux/generic/patches-2.6.39/014-cfi_show_amd_extended_table_version.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/470-mtd_m25p80_add_pm25lv_flash_support.patch (renamed from target/linux/generic/patches-2.6.39/084-mtd_m25p80_add_pm25lv_flash_support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/472-mtd_m25p80_add_MX25L1606E_support.patch (renamed from target/linux/generic/patches-2.6.39/091-mtd-m25p80-add-MX25L1606E-support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/500-yaffs_support.patch (renamed from target/linux/generic/patches-2.6.39/510-yaffs_support.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch (renamed from target/linux/generic/patches-2.6.39/511-yaffs-cvs-2009-04-24.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch (renamed from target/linux/generic/patches-2.6.39/511-yaffs-git-2010-10-20.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/503-yaffs_symlink_bug.patch (renamed from target/linux/generic/patches-2.6.39/512-yaffs_symlink_bug.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/504-yaffs_mutex_fix.patch (renamed from target/linux/generic/patches-2.6.39/513-yaffs_mutex_fix.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/510-jffs2_make_lzma_available.patch (renamed from target/linux/generic/patches-2.6.39/008-jffs2_make_lzma_available.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/511-debloat_lzma.patch (renamed from target/linux/generic/patches-2.6.39/010-debloat_lzma.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/512-jffs2_eofdetect.patch (renamed from target/linux/generic/patches-2.6.39/204-jffs2_eofdetect.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/520-squashfs_update_xz_comp_opts.patch (renamed from target/linux/generic/patches-2.6.39/550-squashfs_update_xz_comp_opts.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch (renamed from target/linux/generic/patches-2.6.39/100-netfilter_layer7_2.22.patch)2
-rw-r--r--target/linux/generic/patches-2.6.39/601-netfilter_layer7_pktmatch.patch (renamed from target/linux/generic/patches-2.6.39/101-netfilter_layer7_pktmatch.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/602-netfilter_layer7_match.patch (renamed from target/linux/generic/patches-2.6.39/102-netfilter_layer7_match.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/603-netfilter_layer7_2.6.36_fix.patch (renamed from target/linux/generic/patches-2.6.39/103-netfilter_layer7_2.6.36_fix.patch)4
-rw-r--r--target/linux/generic/patches-2.6.39/604-netfilter_cisco_794x_iphone.patch (renamed from target/linux/generic/patches-2.6.39/160-netfilter_cisco_794x_iphone.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/605-netfilter_rtsp.patch (renamed from target/linux/generic/patches-2.6.39/190-netfilter_rtsp.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/620-sched_esfq.patch (renamed from target/linux/generic/patches-2.6.39/200-sched_esfq.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/621-sched_act_connmark.patch (renamed from target/linux/generic/patches-2.6.39/290-sched_act_connmark.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/630-packet_socket_type.patch (renamed from target/linux/generic/patches-2.6.39/240-packet_socket_type.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/640-bridge_no_eap_forward.patch (renamed from target/linux/generic/patches-2.6.39/270-bridge_no_eap_forward.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/641-bridge_always_accept_eap.patch (renamed from target/linux/generic/patches-2.6.39/271-bridge_always_accept_eap.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/642-bridge_port_isolate.patch (renamed from target/linux/generic/patches-2.6.39/300-bridge_port_isolate.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/650-pppoe_header_pad.patch (renamed from target/linux/generic/patches-2.6.39/250-pppoe_header_pad.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/651-wireless_mesh_header.patch (renamed from target/linux/generic/patches-2.6.39/940-wireless_mesh_header.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/700-swconfig.patch (renamed from target/linux/generic/patches-2.6.39/650-swconfig.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/701-phy_extension.patch (renamed from target/linux/generic/patches-2.6.39/600-phy_extension.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/702-phy_add_aneg_done_function.patch (renamed from target/linux/generic/patches-2.6.39/601-phy-add-aneg-done-function.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/720-phy_adm6996.patch (renamed from target/linux/generic/patches-2.6.39/620-phy_adm6996.patch)4
-rw-r--r--target/linux/generic/patches-2.6.39/721-phy_packets.patch (renamed from target/linux/generic/patches-2.6.39/630-phy_packets.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch (renamed from target/linux/generic/patches-2.6.39/660-phy_mvswitch.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/723-phy_ip175c.patch (renamed from target/linux/generic/patches-2.6.39/670-phy_ip175c.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/724-phy_ar8216.patch (renamed from target/linux/generic/patches-2.6.39/680-phy_ar8216.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch (renamed from target/linux/generic/patches-2.6.39/690-phy_rtl8306.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch (renamed from target/linux/generic/patches-2.6.39/691-phy_rtl8366.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/750-hostap_txpower.patch (renamed from target/linux/generic/patches-2.6.39/903-hostap_txpower.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/810-pci_disable_common_quirks.patch (renamed from target/linux/generic/patches-2.6.39/030-pci_disable_common_quirks.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch (renamed from target/linux/generic/patches-2.6.39/031-pci_disable_usb_common_quirks.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/820-usb_add_usb_find_device_by_name.patch (renamed from target/linux/generic/patches-2.6.39/310-usb-add-usb_find_device_by_name.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/821-usb_serial_endpoint_size.patch (renamed from target/linux/generic/patches-2.6.39/801-usb_serial_endpoint_size.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch (renamed from target/linux/generic/patches-2.6.39/400-ledtrig_morse.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch (renamed from target/linux/generic/patches-2.6.39/402-ledtrig_netdev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/832-ledtrig_usbdev.patch (renamed from target/linux/generic/patches-2.6.39/403-ledtrig-usbdev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/833-gpio_buttons.patch (renamed from target/linux/generic/patches-2.6.39/410-gpio_buttons.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch (renamed from target/linux/generic/patches-2.6.39/411-gpio_ioctl.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/835-gpiodev.patch (renamed from target/linux/generic/patches-2.6.39/420-gpiodev.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/840-rtc7301.patch (renamed from target/linux/generic/patches-2.6.39/700-rtc7301.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/850-glamo_headers.patch (renamed from target/linux/generic/patches-2.6.39/750-glamo-headers.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/860-01_hotpluggable_spi_gpio.patch (renamed from target/linux/generic/patches-2.6.39/920-01-hotpluggable-spi-gpio.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/861-04_spi_gpio_implement_spi_delay.patch (renamed from target/linux/generic/patches-2.6.39/920-04-spi-gpio-implement-spi-delay.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/862-gpio_spi_driver.patch (renamed from target/linux/generic/patches-2.6.39/921-gpio_spi_driver.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/863-gpiommc.patch (renamed from target/linux/generic/patches-2.6.39/922-gpiommc.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/864-gpiommc_configfs_locking.patch (renamed from target/linux/generic/patches-2.6.39/923-gpiommc-configfs-locking.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/870-hifn795x_byteswap.patch (renamed from target/linux/generic/patches-2.6.39/975-hifn795x-byteswap.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/900-slab_maxsize.patch (renamed from target/linux/generic/patches-2.6.39/203-slab_maxsize.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/910-kobject_uevent.patch (renamed from target/linux/generic/patches-2.6.39/219-kobject_uevent.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/911-kobject_add_broadcast_uevent.patch (renamed from target/linux/generic/patches-2.6.39/223-kobject-add-broadcast_uevent.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/920-unable_to_open_console.patch (renamed from target/linux/generic/patches-2.6.39/840-unable_to_open_console.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/921-use_preinit_as_init.patch (renamed from target/linux/generic/patches-2.6.39/999-use_preinit_as_init.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/940-ocf_kbuild_integration.patch (renamed from target/linux/generic/patches-2.6.39/970-ocf_kbuild_integration.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/941-ocf_20100325.patch (renamed from target/linux/generic/patches-2.6.39/971-ocf_20100325.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/950-vm_exports.patch (renamed from target/linux/generic/patches-2.6.39/980-vm_exports.patch)0
-rw-r--r--target/linux/generic/patches-2.6.39/960-decompress_unlzo_fix.patch (renamed from target/linux/generic/patches-2.6.39/009-decompress_unlzo_fix.patch)0
102 files changed, 300 insertions, 334 deletions
diff --git a/target/linux/generic/patches-2.6.39/067-block2mtd_2.6.38_fix.patch b/target/linux/generic/patches-2.6.39/067-block2mtd_2.6.38_fix.patch
deleted file mode 100644
index 1a052b3f43..0000000000
--- a/target/linux/generic/patches-2.6.39/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.39/209-overlayfs.patch b/target/linux/generic/patches-2.6.39/100-overlayfs.patch
index b5c9199075..b5c9199075 100644
--- a/target/linux/generic/patches-2.6.39/209-overlayfs.patch
+++ b/target/linux/generic/patches-2.6.39/100-overlayfs.patch
diff --git a/target/linux/generic/patches-2.6.39/001-fix_localversion.patch b/target/linux/generic/patches-2.6.39/200-fix_localversion.patch
index 0d1bae8d45..0d1bae8d45 100644
--- a/target/linux/generic/patches-2.6.39/001-fix_localversion.patch
+++ b/target/linux/generic/patches-2.6.39/200-fix_localversion.patch
diff --git a/target/linux/generic/patches-2.6.39/012-extra_optimization.patch b/target/linux/generic/patches-2.6.39/201-extra_optimization.patch
index 8039c66523..8039c66523 100644
--- a/target/linux/generic/patches-2.6.39/012-extra_optimization.patch
+++ b/target/linux/generic/patches-2.6.39/201-extra_optimization.patch
diff --git a/target/linux/generic/patches-2.6.39/902-darwin_scripts_include.patch b/target/linux/generic/patches-2.6.39/210-darwin_scripts_include.patch
index 0686a38973..0686a38973 100644
--- a/target/linux/generic/patches-2.6.39/902-darwin_scripts_include.patch
+++ b/target/linux/generic/patches-2.6.39/210-darwin_scripts_include.patch
diff --git a/target/linux/generic/patches-2.6.39/903-stddef_include.patch b/target/linux/generic/patches-2.6.39/211-stddef_include.patch
index 7fe248d8d3..7fe248d8d3 100644
--- a/target/linux/generic/patches-2.6.39/903-stddef_include.patch
+++ b/target/linux/generic/patches-2.6.39/211-stddef_include.patch
diff --git a/target/linux/generic/patches-2.6.39/028-module_exports.patch b/target/linux/generic/patches-2.6.39/220-module_exports.patch
index 8a95743a4b..8a95743a4b 100644
--- a/target/linux/generic/patches-2.6.39/028-module_exports.patch
+++ b/target/linux/generic/patches-2.6.39/220-module_exports.patch
diff --git a/target/linux/generic/patches-2.6.39/998-openwrt_lzma_options.patch b/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch
index 67e0ceefb0..67e0ceefb0 100644
--- a/target/linux/generic/patches-2.6.39/998-openwrt_lzma_options.patch
+++ b/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch
diff --git a/target/linux/generic/patches-2.6.39/180-netfilter_depends.patch b/target/linux/generic/patches-2.6.39/250-netfilter_depends.patch
index 656046024f..656046024f 100644
--- a/target/linux/generic/patches-2.6.39/180-netfilter_depends.patch
+++ b/target/linux/generic/patches-2.6.39/250-netfilter_depends.patch
diff --git a/target/linux/generic/patches-2.6.39/220-sound_kconfig.patch b/target/linux/generic/patches-2.6.39/251-sound_kconfig.patch
index fb3df254dc..fb3df254dc 100644
--- a/target/linux/generic/patches-2.6.39/220-sound_kconfig.patch
+++ b/target/linux/generic/patches-2.6.39/251-sound_kconfig.patch
diff --git a/target/linux/generic/patches-2.6.39/972-mv_cesa_depends.patch b/target/linux/generic/patches-2.6.39/252-mv_cesa_depends.patch
index 1fd2f6365a..1fd2f6365a 100644
--- a/target/linux/generic/patches-2.6.39/972-mv_cesa_depends.patch
+++ b/target/linux/generic/patches-2.6.39/252-mv_cesa_depends.patch
diff --git a/target/linux/generic/patches-2.6.39/974-ssb_b43_default_on.patch b/target/linux/generic/patches-2.6.39/253-ssb_b43_default_on.patch
index 3176dcb4d8..3176dcb4d8 100644
--- a/target/linux/generic/patches-2.6.39/974-ssb_b43_default_on.patch
+++ b/target/linux/generic/patches-2.6.39/253-ssb_b43_default_on.patch
diff --git a/target/linux/generic/patches-2.6.39/977-textsearch_kconfig_hacks.patch b/target/linux/generic/patches-2.6.39/254-textsearch_kconfig_hacks.patch
index e4d1909ea3..2bb01f77ee 100644
--- a/target/linux/generic/patches-2.6.39/977-textsearch_kconfig_hacks.patch
+++ b/target/linux/generic/patches-2.6.39/254-textsearch_kconfig_hacks.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -206,16 +206,16 @@ config BCH_CONST_T
+@@ -200,16 +200,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
diff --git a/target/linux/generic/patches-2.6.39/978-lib80211_kconfig_hacks.patch b/target/linux/generic/patches-2.6.39/255-lib80211_kconfig_hacks.patch
index c044deac00..c044deac00 100644
--- a/target/linux/generic/patches-2.6.39/978-lib80211_kconfig_hacks.patch
+++ b/target/linux/generic/patches-2.6.39/255-lib80211_kconfig_hacks.patch
diff --git a/target/linux/generic/patches-2.6.39/979-crypto_add_kconfig_prompts.patch b/target/linux/generic/patches-2.6.39/256-crypto_add_kconfig_prompts.patch
index 8462c711f0..8462c711f0 100644
--- a/target/linux/generic/patches-2.6.39/979-crypto_add_kconfig_prompts.patch
+++ b/target/linux/generic/patches-2.6.39/256-crypto_add_kconfig_prompts.patch
diff --git a/target/linux/generic/patches-2.6.39/981-wireless_ext_kconfig_hack.patch b/target/linux/generic/patches-2.6.39/257-wireless_ext_kconfig_hack.patch
index daac5898ae..daac5898ae 100644
--- a/target/linux/generic/patches-2.6.39/981-wireless_ext_kconfig_hack.patch
+++ b/target/linux/generic/patches-2.6.39/257-wireless_ext_kconfig_hack.patch
diff --git a/target/linux/generic/patches-2.6.39/011-mips_expose_boot_raw.patch b/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch
index 0be7b74de1..0be7b74de1 100644
--- a/target/linux/generic/patches-2.6.39/011-mips_expose_boot_raw.patch
+++ b/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch
diff --git a/target/linux/generic/patches-2.6.39/021-mips_image_cmdline_hack.patch b/target/linux/generic/patches-2.6.39/301-mips_image_cmdline_hack.patch
index ab5e775cc6..ab5e775cc6 100644
--- a/target/linux/generic/patches-2.6.39/021-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/patches-2.6.39/301-mips_image_cmdline_hack.patch
diff --git a/target/linux/generic/patches-2.6.39/022-mips_use_generic_thread_info_allocator.patch b/target/linux/generic/patches-2.6.39/302-mips_use_generic_thread_info_allocator.patch
index 1bcc74b41a..1bcc74b41a 100644
--- a/target/linux/generic/patches-2.6.39/022-mips_use_generic_thread_info_allocator.patch
+++ b/target/linux/generic/patches-2.6.39/302-mips_use_generic_thread_info_allocator.patch
diff --git a/target/linux/generic/patches-2.6.39/023-mips-fix-kexec.patch b/target/linux/generic/patches-2.6.39/303-mips_fix_kexec.patch
index e6928dde91..e6928dde91 100644
--- a/target/linux/generic/patches-2.6.39/023-mips-fix-kexec.patch
+++ b/target/linux/generic/patches-2.6.39/303-mips_fix_kexec.patch
diff --git a/target/linux/generic/patches-2.6.39/025-mips_disable_fpu.patch b/target/linux/generic/patches-2.6.39/304-mips_disable_fpu.patch
index 520a5188c8..520a5188c8 100644
--- a/target/linux/generic/patches-2.6.39/025-mips_disable_fpu.patch
+++ b/target/linux/generic/patches-2.6.39/304-mips_disable_fpu.patch
diff --git a/target/linux/generic/patches-2.6.39/027-mips_module_reloc.patch b/target/linux/generic/patches-2.6.39/305-mips_module_reloc.patch
index 5513962cb2..5513962cb2 100644
--- a/target/linux/generic/patches-2.6.39/027-mips_module_reloc.patch
+++ b/target/linux/generic/patches-2.6.39/305-mips_module_reloc.patch
diff --git a/target/linux/generic/patches-2.6.39/202-mips_mem_functions_performance.patch b/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch
index 6ea9ba51ee..6ea9ba51ee 100644
--- a/target/linux/generic/patches-2.6.39/202-mips_mem_functions_performance.patch
+++ b/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch
diff --git a/target/linux/generic/patches-2.6.39/208-mips_oprofile_fix.patch b/target/linux/generic/patches-2.6.39/307-mips_oprofile_fix.patch
index f83c96bb81..f83c96bb81 100644
--- a/target/linux/generic/patches-2.6.39/208-mips_oprofile_fix.patch
+++ b/target/linux/generic/patches-2.6.39/307-mips_oprofile_fix.patch
diff --git a/target/linux/generic/patches-2.6.39/029-arm_module_unresolved_weak_sym.patch b/target/linux/generic/patches-2.6.39/310-arm_module_unresolved_weak_sym.patch
index c63ff67688..c63ff67688 100644
--- a/target/linux/generic/patches-2.6.39/029-arm_module_unresolved_weak_sym.patch
+++ b/target/linux/generic/patches-2.6.39/310-arm_module_unresolved_weak_sym.patch
diff --git a/target/linux/generic/patches-2.6.39/991-ppc4xx_optimization.patch b/target/linux/generic/patches-2.6.39/320-ppc4xx_optimization.patch
index 49d3659286..49d3659286 100644
--- a/target/linux/generic/patches-2.6.39/991-ppc4xx_optimization.patch
+++ b/target/linux/generic/patches-2.6.39/320-ppc4xx_optimization.patch
diff --git a/target/linux/generic/patches-2.6.39/950-powerpc_crtsavres_prereq.patch b/target/linux/generic/patches-2.6.39/321-powerpc_crtsavres_prereq.patch
index e1a141b4fe..e1a141b4fe 100644
--- a/target/linux/generic/patches-2.6.39/950-powerpc_crtsavres_prereq.patch
+++ b/target/linux/generic/patches-2.6.39/321-powerpc_crtsavres_prereq.patch
diff --git a/target/linux/generic/patches-2.6.39/065-rootfs_split.patch b/target/linux/generic/patches-2.6.39/400-rootfs_split.patch
index 081a1b4f01..45072bab22 100644
--- a/target/linux/generic/patches-2.6.39/065-rootfs_split.patch
+++ b/target/linux/generic/patches-2.6.39/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.39/222-partial_eraseblock_write.patch b/target/linux/generic/patches-2.6.39/401-partial_eraseblock_write.patch
index 873c0d1cb1..873c0d1cb1 100644
--- a/target/linux/generic/patches-2.6.39/222-partial_eraseblock_write.patch
+++ b/target/linux/generic/patches-2.6.39/401-partial_eraseblock_write.patch
diff --git a/target/linux/generic/patches-2.6.39/082-mtd_info_move_forward_decl.patch b/target/linux/generic/patches-2.6.39/410-mtd_info_move_forward_decl.patch
index 13f0a217d4..13f0a217d4 100644
--- a/target/linux/generic/patches-2.6.39/082-mtd_info_move_forward_decl.patch
+++ b/target/linux/generic/patches-2.6.39/410-mtd_info_move_forward_decl.patch
diff --git a/target/linux/generic/patches-2.6.39/070-redboot_space.patch b/target/linux/generic/patches-2.6.39/420-redboot_space.patch
index fb6700b07e..fb6700b07e 100644
--- a/target/linux/generic/patches-2.6.39/070-redboot_space.patch
+++ b/target/linux/generic/patches-2.6.39/420-redboot_space.patch
diff --git a/target/linux/generic/patches-2.6.39/071-redboot_boardconfig.patch b/target/linux/generic/patches-2.6.39/421-redboot_boardconfig.patch
index 9188cee29c..9188cee29c 100644
--- a/target/linux/generic/patches-2.6.39/071-redboot_boardconfig.patch
+++ b/target/linux/generic/patches-2.6.39/421-redboot_boardconfig.patch
diff --git a/target/linux/generic/patches-2.6.39/081-mtd_myloader_partition_parser.patch b/target/linux/generic/patches-2.6.39/430-mtd_myloader_partition_parser.patch
index 07267eaa29..07267eaa29 100644
--- a/target/linux/generic/patches-2.6.39/081-mtd_myloader_partition_parser.patch
+++ b/target/linux/generic/patches-2.6.39/430-mtd_myloader_partition_parser.patch
diff --git a/target/linux/generic/patches-2.6.39/060-block2mtd_init.patch b/target/linux/generic/patches-2.6.39/440-block2mtd_init.patch
index b0a95a1bd7..04dd40893d 100644
--- a/target/linux/generic/patches-2.6.39/060-block2mtd_init.patch
+++ b/target/linux/generic/patches-2.6.39/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.39/441-block2mtd_refresh.patch b/target/linux/generic/patches-2.6.39/441-block2mtd_refresh.patch
new file mode 100644
index 0000000000..24ee22f5f6
--- /dev/null
+++ b/target/linux/generic/patches-2.6.39/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.39/066-block2mtd_probe.patch b/target/linux/generic/patches-2.6.39/442-block2mtd_probe.patch
index 1afd2ff20a..780dd28fd2 100644
--- a/target/linux/generic/patches-2.6.39/066-block2mtd_probe.patch
+++ b/target/linux/generic/patches-2.6.39/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.39/080-mtd_plat_nand_chip_fixup.patch b/target/linux/generic/patches-2.6.39/450-mtd_plat_nand_chip_fixup.patch
index 0774e8389f..0774e8389f 100644
--- a/target/linux/generic/patches-2.6.39/080-mtd_plat_nand_chip_fixup.patch
+++ b/target/linux/generic/patches-2.6.39/450-mtd_plat_nand_chip_fixup.patch
diff --git a/target/linux/generic/patches-2.6.39/083-mtd_fix_nand_correct_data_return_code.patch b/target/linux/generic/patches-2.6.39/451-mtd_fix_nand_correct_data_return_code.patch
index f630059e87..f630059e87 100644
--- a/target/linux/generic/patches-2.6.39/083-mtd_fix_nand_correct_data_return_code.patch
+++ b/target/linux/generic/patches-2.6.39/451-mtd_fix_nand_correct_data_return_code.patch
diff --git a/target/linux/generic/patches-2.6.39/014-cfi_show_amd_extended_table_version.patch b/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch
index ecd5c94c90..ecd5c94c90 100644
--- a/target/linux/generic/patches-2.6.39/014-cfi_show_amd_extended_table_version.patch
+++ b/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch
diff --git a/target/linux/generic/patches-2.6.39/084-mtd_m25p80_add_pm25lv_flash_support.patch b/target/linux/generic/patches-2.6.39/470-mtd_m25p80_add_pm25lv_flash_support.patch
index ae4f922190..ae4f922190 100644
--- a/target/linux/generic/patches-2.6.39/084-mtd_m25p80_add_pm25lv_flash_support.patch
+++ b/target/linux/generic/patches-2.6.39/470-mtd_m25p80_add_pm25lv_flash_support.patch
diff --git a/target/linux/generic/patches-2.6.39/091-mtd-m25p80-add-MX25L1606E-support.patch b/target/linux/generic/patches-2.6.39/472-mtd_m25p80_add_MX25L1606E_support.patch
index b5937a3557..b5937a3557 100644
--- a/target/linux/generic/patches-2.6.39/091-mtd-m25p80-add-MX25L1606E-support.patch
+++ b/target/linux/generic/patches-2.6.39/472-mtd_m25p80_add_MX25L1606E_support.patch
diff --git a/target/linux/generic/patches-2.6.39/510-yaffs_support.patch b/target/linux/generic/patches-2.6.39/500-yaffs_support.patch
index 51ef4fcd3c..51ef4fcd3c 100644
--- a/target/linux/generic/patches-2.6.39/510-yaffs_support.patch
+++ b/target/linux/generic/patches-2.6.39/500-yaffs_support.patch
diff --git a/target/linux/generic/patches-2.6.39/511-yaffs-cvs-2009-04-24.patch b/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch
index 5c70e79a05..5c70e79a05 100644
--- a/target/linux/generic/patches-2.6.39/511-yaffs-cvs-2009-04-24.patch
+++ b/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch
diff --git a/target/linux/generic/patches-2.6.39/511-yaffs-git-2010-10-20.patch b/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch
index 2f4e6ef83b..2f4e6ef83b 100644
--- a/target/linux/generic/patches-2.6.39/511-yaffs-git-2010-10-20.patch
+++ b/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch
diff --git a/target/linux/generic/patches-2.6.39/512-yaffs_symlink_bug.patch b/target/linux/generic/patches-2.6.39/503-yaffs_symlink_bug.patch
index dabf2871bf..dabf2871bf 100644
--- a/target/linux/generic/patches-2.6.39/512-yaffs_symlink_bug.patch
+++ b/target/linux/generic/patches-2.6.39/503-yaffs_symlink_bug.patch
diff --git a/target/linux/generic/patches-2.6.39/513-yaffs_mutex_fix.patch b/target/linux/generic/patches-2.6.39/504-yaffs_mutex_fix.patch
index b34b12f785..b34b12f785 100644
--- a/target/linux/generic/patches-2.6.39/513-yaffs_mutex_fix.patch
+++ b/target/linux/generic/patches-2.6.39/504-yaffs_mutex_fix.patch
diff --git a/target/linux/generic/patches-2.6.39/008-jffs2_make_lzma_available.patch b/target/linux/generic/patches-2.6.39/510-jffs2_make_lzma_available.patch
index a1be392941..a1be392941 100644
--- a/target/linux/generic/patches-2.6.39/008-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/patches-2.6.39/510-jffs2_make_lzma_available.patch
diff --git a/target/linux/generic/patches-2.6.39/010-debloat_lzma.patch b/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch
index 18e4a51ee3..18e4a51ee3 100644
--- a/target/linux/generic/patches-2.6.39/010-debloat_lzma.patch
+++ b/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch
diff --git a/target/linux/generic/patches-2.6.39/204-jffs2_eofdetect.patch b/target/linux/generic/patches-2.6.39/512-jffs2_eofdetect.patch
index eaf9489d35..eaf9489d35 100644
--- a/target/linux/generic/patches-2.6.39/204-jffs2_eofdetect.patch
+++ b/target/linux/generic/patches-2.6.39/512-jffs2_eofdetect.patch
diff --git a/target/linux/generic/patches-2.6.39/550-squashfs_update_xz_comp_opts.patch b/target/linux/generic/patches-2.6.39/520-squashfs_update_xz_comp_opts.patch
index 523b89f9ac..523b89f9ac 100644
--- a/target/linux/generic/patches-2.6.39/550-squashfs_update_xz_comp_opts.patch
+++ b/target/linux/generic/patches-2.6.39/520-squashfs_update_xz_comp_opts.patch
diff --git a/target/linux/generic/patches-2.6.39/100-netfilter_layer7_2.22.patch b/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch
index 2bebf646cb..710afc8c99 100644
--- a/target/linux/generic/patches-2.6.39/100-netfilter_layer7_2.22.patch
+++ b/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch
@@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -1020,6 +1020,27 @@ config NETFILTER_XT_MATCH_STATE
+@@ -1018,6 +1018,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.39/101-netfilter_layer7_pktmatch.patch b/target/linux/generic/patches-2.6.39/601-netfilter_layer7_pktmatch.patch
index f65e301fd1..f65e301fd1 100644
--- a/target/linux/generic/patches-2.6.39/101-netfilter_layer7_pktmatch.patch
+++ b/target/linux/generic/patches-2.6.39/601-netfilter_layer7_pktmatch.patch
diff --git a/target/linux/generic/patches-2.6.39/102-netfilter_layer7_match.patch b/target/linux/generic/patches-2.6.39/602-netfilter_layer7_match.patch
index b2e48c824f..b2e48c824f 100644
--- a/target/linux/generic/patches-2.6.39/102-netfilter_layer7_match.patch
+++ b/target/linux/generic/patches-2.6.39/602-netfilter_layer7_match.patch
diff --git a/target/linux/generic/patches-2.6.39/103-netfilter_layer7_2.6.36_fix.patch b/target/linux/generic/patches-2.6.39/603-netfilter_layer7_2.6.36_fix.patch
index 58e5c30a3f..9f4c310d7e 100644
--- a/target/linux/generic/patches-2.6.39/103-netfilter_layer7_2.6.36_fix.patch
+++ b/target/linux/generic/patches-2.6.39/603-netfilter_layer7_2.6.36_fix.patch
@@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -834,6 +834,27 @@ config NETFILTER_XT_MATCH_IPVS
+@@ -832,6 +832,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
-@@ -1020,26 +1041,11 @@ config NETFILTER_XT_MATCH_STATE
+@@ -1018,26 +1039,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.39/160-netfilter_cisco_794x_iphone.patch b/target/linux/generic/patches-2.6.39/604-netfilter_cisco_794x_iphone.patch
index 662a499d17..662a499d17 100644
--- a/target/linux/generic/patches-2.6.39/160-netfilter_cisco_794x_iphone.patch
+++ b/target/linux/generic/patches-2.6.39/604-netfilter_cisco_794x_iphone.patch
diff --git a/target/linux/generic/patches-2.6.39/190-netfilter_rtsp.patch b/target/linux/generic/patches-2.6.39/605-netfilter_rtsp.patch
index ead213a4f9..ead213a4f9 100644
--- a/target/linux/generic/patches-2.6.39/190-netfilter_rtsp.patch
+++ b/target/linux/generic/patches-2.6.39/605-netfilter_rtsp.patch
diff --git a/target/linux/generic/patches-2.6.39/200-sched_esfq.patch b/target/linux/generic/patches-2.6.39/620-sched_esfq.patch
index 868f97b339..868f97b339 100644
--- a/target/linux/generic/patches-2.6.39/200-sched_esfq.patch
+++ b/target/linux/generic/patches-2.6.39/620-sched_esfq.patch
diff --git a/target/linux/generic/patches-2.6.39/290-sched_act_connmark.patch b/target/linux/generic/patches-2.6.39/621-sched_act_connmark.patch
index c8c9b232a5..c8c9b232a5 100644
--- a/target/linux/generic/patches-2.6.39/290-sched_act_connmark.patch
+++ b/target/linux/generic/patches-2.6.39/621-sched_act_connmark.patch
diff --git a/target/linux/generic/patches-2.6.39/240-packet_socket_type.patch b/target/linux/generic/patches-2.6.39/630-packet_socket_type.patch
index 75b61290c3..75b61290c3 100644
--- a/target/linux/generic/patches-2.6.39/240-packet_socket_type.patch
+++ b/target/linux/generic/patches-2.6.39/630-packet_socket_type.patch
diff --git a/target/linux/generic/patches-2.6.39/270-bridge_no_eap_forward.patch b/target/linux/generic/patches-2.6.39/640-bridge_no_eap_forward.patch
index dac898276d..dac898276d 100644
--- a/target/linux/generic/patches-2.6.39/270-bridge_no_eap_forward.patch
+++ b/target/linux/generic/patches-2.6.39/640-bridge_no_eap_forward.patch
diff --git a/target/linux/generic/patches-2.6.39/271-bridge_always_accept_eap.patch b/target/linux/generic/patches-2.6.39/641-bridge_always_accept_eap.patch
index b3a793e49b..b3a793e49b 100644
--- a/target/linux/generic/patches-2.6.39/271-bridge_always_accept_eap.patch
+++ b/target/linux/generic/patches-2.6.39/641-bridge_always_accept_eap.patch
diff --git a/target/linux/generic/patches-2.6.39/300-bridge_port_isolate.patch b/target/linux/generic/patches-2.6.39/642-bridge_port_isolate.patch
index c051a29f2d..c051a29f2d 100644
--- a/target/linux/generic/patches-2.6.39/300-bridge_port_isolate.patch
+++ b/target/linux/generic/patches-2.6.39/642-bridge_port_isolate.patch
diff --git a/target/linux/generic/patches-2.6.39/250-pppoe_header_pad.patch b/target/linux/generic/patches-2.6.39/650-pppoe_header_pad.patch
index 4875d5f23f..4875d5f23f 100644
--- a/target/linux/generic/patches-2.6.39/250-pppoe_header_pad.patch
+++ b/target/linux/generic/patches-2.6.39/650-pppoe_header_pad.patch
diff --git a/target/linux/generic/patches-2.6.39/940-wireless_mesh_header.patch b/target/linux/generic/patches-2.6.39/651-wireless_mesh_header.patch
index 48c4c2a153..48c4c2a153 100644
--- a/target/linux/generic/patches-2.6.39/940-wireless_mesh_header.patch
+++ b/target/linux/generic/patches-2.6.39/651-wireless_mesh_header.patch
diff --git a/target/linux/generic/patches-2.6.39/650-swconfig.patch b/target/linux/generic/patches-2.6.39/700-swconfig.patch
index 6825037ce9..6825037ce9 100644
--- a/target/linux/generic/patches-2.6.39/650-swconfig.patch
+++ b/target/linux/generic/patches-2.6.39/700-swconfig.patch
diff --git a/target/linux/generic/patches-2.6.39/600-phy_extension.patch b/target/linux/generic/patches-2.6.39/701-phy_extension.patch
index b2d1665cea..b2d1665cea 100644
--- a/target/linux/generic/patches-2.6.39/600-phy_extension.patch
+++ b/target/linux/generic/patches-2.6.39/701-phy_extension.patch
diff --git a/target/linux/generic/patches-2.6.39/601-phy-add-aneg-done-function.patch b/target/linux/generic/patches-2.6.39/702-phy_add_aneg_done_function.patch
index 776b768431..776b768431 100644
--- a/target/linux/generic/patches-2.6.39/601-phy-add-aneg-done-function.patch
+++ b/target/linux/generic/patches-2.6.39/702-phy_add_aneg_done_function.patch
diff --git a/target/linux/generic/patches-2.6.39/620-phy_adm6996.patch b/target/linux/generic/patches-2.6.39/720-phy_adm6996.patch
index 614cfdfe1d..5b2218edf4 100644
--- a/target/linux/generic/patches-2.6.39/620-phy_adm6996.patch
+++ b/target/linux/generic/patches-2.6.39/720-phy_adm6996.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -91,6 +91,11 @@ config MICREL_PHY
+@@ -97,6 +97,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.39/630-phy_packets.patch b/target/linux/generic/patches-2.6.39/721-phy_packets.patch
index b8a76b0ce0..b8a76b0ce0 100644
--- a/target/linux/generic/patches-2.6.39/630-phy_packets.patch
+++ b/target/linux/generic/patches-2.6.39/721-phy_packets.patch
diff --git a/target/linux/generic/patches-2.6.39/660-phy_mvswitch.patch b/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch
index b5fef7668e..b5fef7668e 100644
--- a/target/linux/generic/patches-2.6.39/660-phy_mvswitch.patch
+++ b/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch
diff --git a/target/linux/generic/patches-2.6.39/670-phy_ip175c.patch b/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch
index d99ca61799..d99ca61799 100644
--- a/target/linux/generic/patches-2.6.39/670-phy_ip175c.patch
+++ b/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch
diff --git a/target/linux/generic/patches-2.6.39/680-phy_ar8216.patch b/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch
index a7afdfd820..a7afdfd820 100644
--- a/target/linux/generic/patches-2.6.39/680-phy_ar8216.patch
+++ b/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch
diff --git a/target/linux/generic/patches-2.6.39/690-phy_rtl8306.patch b/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch
index cd5e1a88b2..cd5e1a88b2 100644
--- a/target/linux/generic/patches-2.6.39/690-phy_rtl8306.patch
+++ b/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch
diff --git a/target/linux/generic/patches-2.6.39/691-phy_rtl8366.patch b/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch
index c4599969cb..c4599969cb 100644
--- a/target/linux/generic/patches-2.6.39/691-phy_rtl8366.patch
+++ b/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch
diff --git a/target/linux/generic/patches-2.6.39/903-hostap_txpower.patch b/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch
index e4c1803ff5..e4c1803ff5 100644
--- a/target/linux/generic/patches-2.6.39/903-hostap_txpower.patch
+++ b/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch
diff --git a/target/linux/generic/patches-2.6.39/030-pci_disable_common_quirks.patch b/target/linux/generic/patches-2.6.39/810-pci_disable_common_quirks.patch
index c947836166..c947836166 100644
--- a/target/linux/generic/patches-2.6.39/030-pci_disable_common_quirks.patch
+++ b/target/linux/generic/patches-2.6.39/810-pci_disable_common_quirks.patch
diff --git a/target/linux/generic/patches-2.6.39/031-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch
index 47abdf27ca..47abdf27ca 100644
--- a/target/linux/generic/patches-2.6.39/031-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch
diff --git a/target/linux/generic/patches-2.6.39/310-usb-add-usb_find_device_by_name.patch b/target/linux/generic/patches-2.6.39/820-usb_add_usb_find_device_by_name.patch
index 3aeda678fc..3aeda678fc 100644
--- a/target/linux/generic/patches-2.6.39/310-usb-add-usb_find_device_by_name.patch
+++ b/target/linux/generic/patches-2.6.39/820-usb_add_usb_find_device_by_name.patch
diff --git a/target/linux/generic/patches-2.6.39/801-usb_serial_endpoint_size.patch b/target/linux/generic/patches-2.6.39/821-usb_serial_endpoint_size.patch
index 3dd419f2ae..3dd419f2ae 100644
--- a/target/linux/generic/patches-2.6.39/801-usb_serial_endpoint_size.patch
+++ b/target/linux/generic/patches-2.6.39/821-usb_serial_endpoint_size.patch
diff --git a/target/linux/generic/patches-2.6.39/400-ledtrig_morse.patch b/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch
index 2edc4f33cb..2edc4f33cb 100644
--- a/target/linux/generic/patches-2.6.39/400-ledtrig_morse.patch
+++ b/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch
diff --git a/target/linux/generic/patches-2.6.39/402-ledtrig_netdev.patch b/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch
index 413174006c..413174006c 100644
--- a/target/linux/generic/patches-2.6.39/402-ledtrig_netdev.patch
+++ b/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch
diff --git a/target/linux/generic/patches-2.6.39/403-ledtrig-usbdev.patch b/target/linux/generic/patches-2.6.39/832-ledtrig_usbdev.patch
index 54c94a6650..54c94a6650 100644
--- a/target/linux/generic/patches-2.6.39/403-ledtrig-usbdev.patch
+++ b/target/linux/generic/patches-2.6.39/832-ledtrig_usbdev.patch
diff --git a/target/linux/generic/patches-2.6.39/410-gpio_buttons.patch b/target/linux/generic/patches-2.6.39/833-gpio_buttons.patch
index cfe00286d9..cfe00286d9 100644
--- a/target/linux/generic/patches-2.6.39/410-gpio_buttons.patch
+++ b/target/linux/generic/patches-2.6.39/833-gpio_buttons.patch
diff --git a/target/linux/generic/patches-2.6.39/411-gpio_ioctl.patch b/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch
index 6609a1670a..6609a1670a 100644
--- a/target/linux/generic/patches-2.6.39/411-gpio_ioctl.patch
+++ b/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch
diff --git a/target/linux/generic/patches-2.6.39/420-gpiodev.patch b/target/linux/generic/patches-2.6.39/835-gpiodev.patch
index f41d5a6850..f41d5a6850 100644
--- a/target/linux/generic/patches-2.6.39/420-gpiodev.patch
+++ b/target/linux/generic/patches-2.6.39/835-gpiodev.patch
diff --git a/target/linux/generic/patches-2.6.39/700-rtc7301.patch b/target/linux/generic/patches-2.6.39/840-rtc7301.patch
index 75f71d7601..75f71d7601 100644
--- a/target/linux/generic/patches-2.6.39/700-rtc7301.patch
+++ b/target/linux/generic/patches-2.6.39/840-rtc7301.patch
diff --git a/target/linux/generic/patches-2.6.39/750-glamo-headers.patch b/target/linux/generic/patches-2.6.39/850-glamo_headers.patch
index f3cf973651..f3cf973651 100644
--- a/target/linux/generic/patches-2.6.39/750-glamo-headers.patch
+++ b/target/linux/generic/patches-2.6.39/850-glamo_headers.patch
diff --git a/target/linux/generic/patches-2.6.39/920-01-hotpluggable-spi-gpio.patch b/target/linux/generic/patches-2.6.39/860-01_hotpluggable_spi_gpio.patch
index f8e6374fa7..f8e6374fa7 100644
--- a/target/linux/generic/patches-2.6.39/920-01-hotpluggable-spi-gpio.patch
+++ b/target/linux/generic/patches-2.6.39/860-01_hotpluggable_spi_gpio.patch
diff --git a/target/linux/generic/patches-2.6.39/920-04-spi-gpio-implement-spi-delay.patch b/target/linux/generic/patches-2.6.39/861-04_spi_gpio_implement_spi_delay.patch
index 4b145c2734..4b145c2734 100644
--- a/target/linux/generic/patches-2.6.39/920-04-spi-gpio-implement-spi-delay.patch
+++ b/target/linux/generic/patches-2.6.39/861-04_spi_gpio_implement_spi_delay.patch
diff --git a/target/linux/generic/patches-2.6.39/921-gpio_spi_driver.patch b/target/linux/generic/patches-2.6.39/862-gpio_spi_driver.patch
index 3ea9f9091c..3ea9f9091c 100644
--- a/target/linux/generic/patches-2.6.39/921-gpio_spi_driver.patch
+++ b/target/linux/generic/patches-2.6.39/862-gpio_spi_driver.patch
diff --git a/target/linux/generic/patches-2.6.39/922-gpiommc.patch b/target/linux/generic/patches-2.6.39/863-gpiommc.patch
index c10eaeed25..c10eaeed25 100644
--- a/target/linux/generic/patches-2.6.39/922-gpiommc.patch
+++ b/target/linux/generic/patches-2.6.39/863-gpiommc.patch
diff --git a/target/linux/generic/patches-2.6.39/923-gpiommc-configfs-locking.patch b/target/linux/generic/patches-2.6.39/864-gpiommc_configfs_locking.patch
index 2e4e820b2b..2e4e820b2b 100644
--- a/target/linux/generic/patches-2.6.39/923-gpiommc-configfs-locking.patch
+++ b/target/linux/generic/patches-2.6.39/864-gpiommc_configfs_locking.patch
diff --git a/target/linux/generic/patches-2.6.39/975-hifn795x-byteswap.patch b/target/linux/generic/patches-2.6.39/870-hifn795x_byteswap.patch
index 3a37c951ec..3a37c951ec 100644
--- a/target/linux/generic/patches-2.6.39/975-hifn795x-byteswap.patch
+++ b/target/linux/generic/patches-2.6.39/870-hifn795x_byteswap.patch
diff --git a/target/linux/generic/patches-2.6.39/203-slab_maxsize.patch b/target/linux/generic/patches-2.6.39/900-slab_maxsize.patch
index 1c9569450a..1c9569450a 100644
--- a/target/linux/generic/patches-2.6.39/203-slab_maxsize.patch
+++ b/target/linux/generic/patches-2.6.39/900-slab_maxsize.patch
diff --git a/target/linux/generic/patches-2.6.39/219-kobject_uevent.patch b/target/linux/generic/patches-2.6.39/910-kobject_uevent.patch
index f15749fa17..f15749fa17 100644
--- a/target/linux/generic/patches-2.6.39/219-kobject_uevent.patch
+++ b/target/linux/generic/patches-2.6.39/910-kobject_uevent.patch
diff --git a/target/linux/generic/patches-2.6.39/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.39/911-kobject_add_broadcast_uevent.patch
index a428ec5cd1..a428ec5cd1 100644
--- a/target/linux/generic/patches-2.6.39/223-kobject-add-broadcast_uevent.patch
+++ b/target/linux/generic/patches-2.6.39/911-kobject_add_broadcast_uevent.patch
diff --git a/target/linux/generic/patches-2.6.39/840-unable_to_open_console.patch b/target/linux/generic/patches-2.6.39/920-unable_to_open_console.patch
index 27b9002936..27b9002936 100644
--- a/target/linux/generic/patches-2.6.39/840-unable_to_open_console.patch
+++ b/target/linux/generic/patches-2.6.39/920-unable_to_open_console.patch
diff --git a/target/linux/generic/patches-2.6.39/999-use_preinit_as_init.patch b/target/linux/generic/patches-2.6.39/921-use_preinit_as_init.patch
index c47779810d..c47779810d 100644
--- a/target/linux/generic/patches-2.6.39/999-use_preinit_as_init.patch
+++ b/target/linux/generic/patches-2.6.39/921-use_preinit_as_init.patch
diff --git a/target/linux/generic/patches-2.6.39/970-ocf_kbuild_integration.patch b/target/linux/generic/patches-2.6.39/940-ocf_kbuild_integration.patch
index 3c322f3d14..3c322f3d14 100644
--- a/target/linux/generic/patches-2.6.39/970-ocf_kbuild_integration.patch
+++ b/target/linux/generic/patches-2.6.39/940-ocf_kbuild_integration.patch
diff --git a/target/linux/generic/patches-2.6.39/971-ocf_20100325.patch b/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch
index 537f9ed374..537f9ed374 100644
--- a/target/linux/generic/patches-2.6.39/971-ocf_20100325.patch
+++ b/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch
diff --git a/target/linux/generic/patches-2.6.39/980-vm_exports.patch b/target/linux/generic/patches-2.6.39/950-vm_exports.patch
index 9fcaabc791..9fcaabc791 100644
--- a/target/linux/generic/patches-2.6.39/980-vm_exports.patch
+++ b/target/linux/generic/patches-2.6.39/950-vm_exports.patch
diff --git a/target/linux/generic/patches-2.6.39/009-decompress_unlzo_fix.patch b/target/linux/generic/patches-2.6.39/960-decompress_unlzo_fix.patch
index ee7c118ef0..ee7c118ef0 100644
--- a/target/linux/generic/patches-2.6.39/009-decompress_unlzo_fix.patch
+++ b/target/linux/generic/patches-2.6.39/960-decompress_unlzo_fix.patch