diff --git a/debian/changelog b/debian/changelog index 002030673..d2c78401d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -linux-2.6 (2.6.25~rc9-1~experimental.1) UNRELEASED; urgency=low +linux-2.6 (2.6.25-1~experimental.1) UNRELEASED; urgency=low * New upstream release (closes: #456799, #468440, #475161, #475134, #475441) - Add oabi shim for fstatat64 (closes: #462677) diff --git a/debian/patches/bugfix/all/patch-2.6.25-rc9-git3 b/debian/patches/bugfix/all/patch-2.6.25-rc9-git3 deleted file mode 100644 index 6f1f7d446..000000000 --- a/debian/patches/bugfix/all/patch-2.6.25-rc9-git3 +++ /dev/null @@ -1,2242 +0,0 @@ -diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt -index cc6cdb9..7fb8e6d 100644 ---- a/Documentation/filesystems/seq_file.txt -+++ b/Documentation/filesystems/seq_file.txt -@@ -92,7 +92,7 @@ implementations; in most cases the start() function should check for a - "past end of file" condition and return NULL if need be. - - For more complicated applications, the private field of the seq_file --structure can be used. There is also a special value whch can be returned -+structure can be used. There is also a special value which can be returned - by the start() function called SEQ_START_TOKEN; it can be used if you wish - to instruct your show() function (described below) to print a header at the - top of the output. SEQ_START_TOKEN should only be used if the offset is -@@ -146,7 +146,7 @@ the four functions we have just defined: - This structure will be needed to tie our iterator to the /proc file in - a little bit. - --It's worth noting that the interator value returned by start() and -+It's worth noting that the iterator value returned by start() and - manipulated by the other functions is considered to be completely opaque by - the seq_file code. It can thus be anything that is useful in stepping - through the data to be output. Counters can be useful, but it could also be -@@ -262,7 +262,7 @@ routines useful: - - These helpers will interpret pos as a position within the list and iterate - accordingly. Your start() and next() functions need only invoke the --seq_list_* helpers with a pointer to the appropriate list_head structure. -+seq_list_* helpers with a pointer to the appropriate list_head structure. - - - The extra-simple version -diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt -index f962d01..3102b81 100644 ---- a/Documentation/vm/hugetlbpage.txt -+++ b/Documentation/vm/hugetlbpage.txt -@@ -88,10 +88,9 @@ hugepages from the buddy allocator, if the normal pool is exhausted. As - these surplus hugepages go out of use, they are freed back to the buddy - allocator. - --Caveat: Shrinking the pool via nr_hugepages while a surplus is in effect --will allow the number of surplus huge pages to exceed the overcommit --value, as the pool hugepages (which must have been in use for a surplus --hugepages to be allocated) will become surplus hugepages. As long as -+Caveat: Shrinking the pool via nr_hugepages such that it becomes less -+than the number of hugepages in use will convert the balance to surplus -+huge pages even if it would exceed the overcommit value. As long as - this condition holds, however, no more surplus huge pages will be - allowed on the system until one of the two sysctls are increased - sufficiently, or the surplus huge pages go out of use and are freed. -diff --git a/arch/frv/kernel/traps.c b/arch/frv/kernel/traps.c -index 2f7e668..7089c24 100644 ---- a/arch/frv/kernel/traps.c -+++ b/arch/frv/kernel/traps.c -@@ -73,7 +73,7 @@ asmlinkage void illegal_instruction(unsigned long esfr1, unsigned long epcr0, un - epcr0, esr0, esfr1); - - info.si_errno = 0; -- info.si_addr = (void *) ((epcr0 & EPCR0_PC) ? (epcr0 & EPCR0_PC) : __frame->pc); -+ info.si_addr = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc); - - switch (__frame->tbr & TBR_TT) { - case TBR_TT_ILLEGAL_INSTR: -diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c -index e282c34..53d0a8e 100644 ---- a/arch/ia64/pci/pci.c -+++ b/arch/ia64/pci/pci.c -@@ -362,7 +362,12 @@ pci_acpi_scan_root(struct acpi_device *device, int domain, int bus) - info.name = name; - acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window, - &info); -- -+ /* -+ * See arch/x86/pci/acpi.c. -+ * The desired pci bus might already be scanned in a quirk. We -+ * should handle the case here, but it appears that IA64 hasn't -+ * such quirk. So we just ignore the case now. -+ */ - pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller); - if (pbus) - pcibios_setup_root_windows(pbus, controller); -diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c -index 58fccc9..06213d1 100644 ---- a/arch/parisc/kernel/signal.c -+++ b/arch/parisc/kernel/signal.c -@@ -534,7 +534,8 @@ insert_restart_trampoline(struct pt_regs *regs) - * Flushing one cacheline is cheap. - * "sync" on bigger (> 4 way) boxes is not. - */ -- flush_icache_range(regs->gr[30], regs->gr[30] + 4); -+ flush_user_dcache_range(regs->gr[30], regs->gr[30] + 4); -+ flush_user_icache_range(regs->gr[30], regs->gr[30] + 4); - - regs->gr[31] = regs->gr[30] + 8; - /* Preserve original r28. */ -diff --git a/arch/sh/boot/compressed/head_32.S b/arch/sh/boot/compressed/head_32.S -index a8399b0..06ac31f 100644 ---- a/arch/sh/boot/compressed/head_32.S -+++ b/arch/sh/boot/compressed/head_32.S -@@ -7,7 +7,6 @@ - - .text - --#include - #include - - .global startup -diff --git a/arch/sh/boot/compressed/head_64.S b/arch/sh/boot/compressed/head_64.S -index 1d4ecbf..f72c198 100644 ---- a/arch/sh/boot/compressed/head_64.S -+++ b/arch/sh/boot/compressed/head_64.S -@@ -13,7 +13,6 @@ - * Modification for compressed loader: - * Copyright (C) 2002 Stuart Menefy (stuart.menefy@st.com) - */ --#include - #include - #include - #include -diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c -index 046999b..0283d81 100644 ---- a/arch/sh/kernel/process_64.c -+++ b/arch/sh/kernel/process_64.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - struct task_struct *last_task_used_math = NULL; - -diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c -index f6fbdfa..d453c47 100644 ---- a/arch/sh/kernel/ptrace_64.c -+++ b/arch/sh/kernel/ptrace_64.c -@@ -33,6 +33,7 @@ - #include - #include - #include -+#include - - /* This mask defines the bits of the SR which the user is not allowed to - change, which are everything except S, Q, M, PR, SZ, FR. */ -diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c -index d80de39..45bb333 100644 ---- a/arch/sh/kernel/sh_ksyms_32.c -+++ b/arch/sh/kernel/sh_ksyms_32.c -@@ -149,3 +149,4 @@ EXPORT_SYMBOL(clear_page); - EXPORT_SYMBOL(copy_page); - EXPORT_SYMBOL(__clear_user); - EXPORT_SYMBOL(_ebss); -+EXPORT_SYMBOL(empty_zero_page); -diff --git a/arch/sh/kernel/sh_ksyms_64.c b/arch/sh/kernel/sh_ksyms_64.c -index dd38a68..b6410ce 100644 ---- a/arch/sh/kernel/sh_ksyms_64.c -+++ b/arch/sh/kernel/sh_ksyms_64.c -@@ -44,6 +44,7 @@ EXPORT_SYMBOL(__put_user_asm_l); - EXPORT_SYMBOL(__get_user_asm_l); - EXPORT_SYMBOL(copy_page); - EXPORT_SYMBOL(__copy_user); -+EXPORT_SYMBOL(empty_zero_page); - EXPORT_SYMBOL(memcpy); - EXPORT_SYMBOL(__udelay); - EXPORT_SYMBOL(__ndelay); -diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c -index 80bde19..552eb81 100644 ---- a/arch/sh/kernel/signal_64.c -+++ b/arch/sh/kernel/signal_64.c -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #define REG_RET 9 - #define REG_ARG1 2 -diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c -index baa4fa3..e08b3bf 100644 ---- a/arch/sh/kernel/traps_32.c -+++ b/arch/sh/kernel/traps_32.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - #ifdef CONFIG_SH_KGDB - #include -diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c -index 1b58a74..a85831c 100644 ---- a/arch/sh/kernel/traps_64.c -+++ b/arch/sh/kernel/traps_64.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - #undef DEBUG_EXCEPTION - #ifdef DEBUG_EXCEPTION -diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c -index 0234f28..378136f 100644 ---- a/arch/x86/pci/acpi.c -+++ b/arch/x86/pci/acpi.c -@@ -219,8 +219,21 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do - if (pxm >= 0) - sd->node = pxm_to_node(pxm); - #endif -+ /* -+ * Maybe the desired pci bus has been already scanned. In such case -+ * it is unnecessary to scan the pci bus with the given domain,busnum. -+ */ -+ bus = pci_find_bus(domain, busnum); -+ if (bus) { -+ /* -+ * If the desired bus exits, the content of bus->sysdata will -+ * be replaced by sd. -+ */ -+ memcpy(bus->sysdata, sd, sizeof(*sd)); -+ kfree(sd); -+ } else -+ bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); - -- bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); - if (!bus) - kfree(sd); - -@@ -228,7 +241,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do - if (bus != NULL) { - if (pxm >= 0) { - printk("bus %d -> pxm %d -> node %d\n", -- busnum, pxm, sd->node); -+ busnum, pxm, pxm_to_node(pxm)); - } - } - #endif -diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c -index 5b6760e..2d1955c 100644 ---- a/drivers/acpi/bus.c -+++ b/drivers/acpi/bus.c -@@ -373,10 +373,11 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) - } - - spin_lock_irqsave(&acpi_bus_event_lock, flags); -- entry = -- list_entry(acpi_bus_event_list.next, struct acpi_bus_event, node); -- if (entry) -+ if (!list_empty(&acpi_bus_event_list)) { -+ entry = list_entry(acpi_bus_event_list.next, -+ struct acpi_bus_event, node); - list_del(&entry->node); -+ } - spin_unlock_irqrestore(&acpi_bus_event_lock, flags); - - if (!entry) -diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c -index ce830fe..511a830 100644 ---- a/drivers/ata/pata_ali.c -+++ b/drivers/ata/pata_ali.c -@@ -36,7 +36,7 @@ - #define DRV_NAME "pata_ali" - #define DRV_VERSION "0.7.5" - --int ali_atapi_dma = 0; -+static int ali_atapi_dma = 0; - module_param_named(atapi_dma, ali_atapi_dma, int, 0644); - MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)"); - -diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c -index 840d1c4..019e367 100644 ---- a/drivers/ata/sata_svw.c -+++ b/drivers/ata/sata_svw.c -@@ -531,8 +531,8 @@ static int k2_sata_init_one(struct pci_dev *pdev, const struct pci_device_id *en - * */ - static const struct pci_device_id k2_sata_pci_tbl[] = { - { PCI_VDEVICE(SERVERWORKS, 0x0240), chip_svw4 }, -- { PCI_VDEVICE(SERVERWORKS, 0x0241), chip_svw4 }, -- { PCI_VDEVICE(SERVERWORKS, 0x0242), chip_svw8 }, -+ { PCI_VDEVICE(SERVERWORKS, 0x0241), chip_svw8 }, -+ { PCI_VDEVICE(SERVERWORKS, 0x0242), chip_svw4 }, - { PCI_VDEVICE(SERVERWORKS, 0x024a), chip_svw4 }, - { PCI_VDEVICE(SERVERWORKS, 0x024b), chip_svw4 }, - { PCI_VDEVICE(SERVERWORKS, 0x0410), chip_svw42 }, -diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c -index ced83c2..ef1a300 100644 ---- a/drivers/isdn/i4l/isdn_net.c -+++ b/drivers/isdn/i4l/isdn_net.c -@@ -2010,6 +2010,7 @@ isdn_net_init(struct net_device *ndev) - ndev->flags = IFF_NOARP|IFF_POINTOPOINT; - ndev->type = ARPHRD_ETHER; - ndev->addr_len = ETH_ALEN; -+ ndev->validate_addr = NULL; - - /* for clients with MPPP maybe higher values better */ - ndev->tx_queue_len = 30; -diff --git a/drivers/leds/leds-ams-delta.c b/drivers/leds/leds-ams-delta.c -index 9e30774..c37bb0d 100644 ---- a/drivers/leds/leds-ams-delta.c -+++ b/drivers/leds/leds-ams-delta.c -@@ -140,6 +140,7 @@ static struct platform_driver ams_delta_led_driver = { - .resume = ams_delta_led_resume, - .driver = { - .name = "ams-delta-led", -+ .owner = THIS_MODULE, - }, - }; - -@@ -159,3 +160,4 @@ module_exit(ams_delta_led_exit); - MODULE_AUTHOR("Jonathan McDowell "); - MODULE_DESCRIPTION("Amstrad Delta LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:ams-delta-led"); -diff --git a/drivers/leds/leds-atmel-pwm.c b/drivers/leds/leds-atmel-pwm.c -index af61f55..28db6c1 100644 ---- a/drivers/leds/leds-atmel-pwm.c -+++ b/drivers/leds/leds-atmel-pwm.c -@@ -132,6 +132,9 @@ static int __exit pwmled_remove(struct platform_device *pdev) - return 0; - } - -+/* work with hotplug and coldplug */ -+MODULE_ALIAS("platform:leds-atmel-pwm"); -+ - static struct platform_driver pwmled_driver = { - .driver = { - .name = "leds-atmel-pwm", -diff --git a/drivers/leds/leds-clevo-mail.c b/drivers/leds/leds-clevo-mail.c -index 6c3d33b..5750b08 100644 ---- a/drivers/leds/leds-clevo-mail.c -+++ b/drivers/leds/leds-clevo-mail.c -@@ -170,6 +170,7 @@ static struct platform_driver clevo_mail_led_driver = { - .resume = clevo_mail_led_resume, - .driver = { - .name = KBUILD_MODNAME, -+ .owner = THIS_MODULE, - }, - }; - -diff --git a/drivers/leds/leds-cm-x270.c b/drivers/leds/leds-cm-x270.c -index 9aebef0..accc7ed 100644 ---- a/drivers/leds/leds-cm-x270.c -+++ b/drivers/leds/leds-cm-x270.c -@@ -101,6 +101,7 @@ static struct platform_driver cmx270led_driver = { - #endif - .driver = { - .name = "cm-x270-led", -+ .owner = THIS_MODULE, - }, - }; - -@@ -120,3 +121,4 @@ module_exit(cmx270led_exit); - MODULE_AUTHOR("Mike Rapoport "); - MODULE_DESCRIPTION("CM-x270 LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:cm-x270-led"); -diff --git a/drivers/leds/leds-cobalt-qube.c b/drivers/leds/leds-cobalt-qube.c -index d2b54b5..096881a 100644 ---- a/drivers/leds/leds-cobalt-qube.c -+++ b/drivers/leds/leds-cobalt-qube.c -@@ -75,6 +75,9 @@ static int __devexit cobalt_qube_led_remove(struct platform_device *pdev) - return 0; - } - -+/* work with hotplug and coldplug */ -+MODULE_ALIAS("platform:cobalt-qube-leds"); -+ - static struct platform_driver cobalt_qube_led_driver = { - .probe = cobalt_qube_led_probe, - .remove = __devexit_p(cobalt_qube_led_remove), -diff --git a/drivers/leds/leds-corgi.c b/drivers/leds/leds-corgi.c -index e45f6c4..29e931f 100644 ---- a/drivers/leds/leds-corgi.c -+++ b/drivers/leds/leds-corgi.c -@@ -99,6 +99,7 @@ static struct platform_driver corgiled_driver = { - #endif - .driver = { - .name = "corgi-led", -+ .owner = THIS_MODULE, - }, - }; - -@@ -118,3 +119,4 @@ module_exit(corgiled_exit); - MODULE_AUTHOR("Richard Purdie "); - MODULE_DESCRIPTION("Corgi LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:corgi-led"); -diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c -index 4c0b058..1aae8b3 100644 ---- a/drivers/leds/leds-gpio.c -+++ b/drivers/leds/leds-gpio.c -@@ -199,3 +199,4 @@ module_exit(gpio_led_exit); - MODULE_AUTHOR("Raphael Assenat "); - MODULE_DESCRIPTION("GPIO LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:leds-gpio"); -diff --git a/drivers/leds/leds-h1940.c b/drivers/leds/leds-h1940.c -index 677c993..6e51c9b 100644 ---- a/drivers/leds/leds-h1940.c -+++ b/drivers/leds/leds-h1940.c -@@ -139,6 +139,7 @@ static int h1940leds_remove(struct platform_device *pdev) - static struct platform_driver h1940leds_driver = { - .driver = { - .name = "h1940-leds", -+ .owner = THIS_MODULE, - }, - .probe = h1940leds_probe, - .remove = h1940leds_remove, -@@ -161,3 +162,4 @@ module_exit(h1940leds_exit); - MODULE_AUTHOR("Arnaud Patard "); - MODULE_DESCRIPTION("LED driver for the iPAQ H1940"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:h1940-leds"); -diff --git a/drivers/leds/leds-hp6xx.c b/drivers/leds/leds-hp6xx.c -index 82d4ec3..870f5a3 100644 ---- a/drivers/leds/leds-hp6xx.c -+++ b/drivers/leds/leds-hp6xx.c -@@ -90,6 +90,9 @@ static int hp6xxled_remove(struct platform_device *pdev) - return 0; - } - -+/* work with hotplug and coldplug */ -+MODULE_ALIAS("platform:hp6xx-led"); -+ - static struct platform_driver hp6xxled_driver = { - .probe = hp6xxled_probe, - .remove = hp6xxled_remove, -@@ -99,6 +102,7 @@ static struct platform_driver hp6xxled_driver = { - #endif - .driver = { - .name = "hp6xx-led", -+ .owner = THIS_MODULE, - }, - }; - -diff --git a/drivers/leds/leds-s3c24xx.c b/drivers/leds/leds-s3c24xx.c -index 0fd6407..0d10e11 100644 ---- a/drivers/leds/leds-s3c24xx.c -+++ b/drivers/leds/leds-s3c24xx.c -@@ -160,3 +160,4 @@ module_exit(s3c24xx_led_exit); - MODULE_AUTHOR("Ben Dooks "); - MODULE_DESCRIPTION("S3C24XX LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:s3c24xx_led"); -diff --git a/drivers/leds/leds-spitz.c b/drivers/leds/leds-spitz.c -index 93e1012..87007cc 100644 ---- a/drivers/leds/leds-spitz.c -+++ b/drivers/leds/leds-spitz.c -@@ -105,6 +105,7 @@ static struct platform_driver spitzled_driver = { - #endif - .driver = { - .name = "spitz-led", -+ .owner = THIS_MODULE, - }, - }; - -@@ -124,3 +125,4 @@ module_exit(spitzled_exit); - MODULE_AUTHOR("Richard Purdie "); - MODULE_DESCRIPTION("Spitz LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:spitz-led"); -diff --git a/drivers/leds/leds-tosa.c b/drivers/leds/leds-tosa.c -index 9e0a188..7ebecc4 100644 ---- a/drivers/leds/leds-tosa.c -+++ b/drivers/leds/leds-tosa.c -@@ -109,6 +109,7 @@ static struct platform_driver tosaled_driver = { - .resume = tosaled_resume, - .driver = { - .name = "tosa-led", -+ .owner = THIS_MODULE, - }, - }; - -@@ -128,3 +129,4 @@ module_exit(tosaled_exit); - MODULE_AUTHOR("Dirk Opfer "); - MODULE_DESCRIPTION("Tosa LED driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:tosa-led"); -diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c -index 058ccac..e171650 100644 ---- a/drivers/misc/atmel-ssc.c -+++ b/drivers/misc/atmel-ssc.c -@@ -154,6 +154,7 @@ static struct platform_driver ssc_driver = { - .remove = __devexit_p(ssc_remove), - .driver = { - .name = "ssc", -+ .owner = THIS_MODULE, - }, - }; - -@@ -172,3 +173,4 @@ module_exit(ssc_exit); - MODULE_AUTHOR("Hans-Christian Egtvedt "); - MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:ssc"); -diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c -index f8d3b9a..0d5ce03 100644 ---- a/drivers/misc/atmel_pwm.c -+++ b/drivers/misc/atmel_pwm.c -@@ -407,3 +407,4 @@ module_exit(pwm_exit); - - MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:atmel_pwm"); -diff --git a/drivers/misc/hdpuftrs/hdpu_cpustate.c b/drivers/misc/hdpuftrs/hdpu_cpustate.c -index aa8ce7a..302e924 100644 ---- a/drivers/misc/hdpuftrs/hdpu_cpustate.c -+++ b/drivers/misc/hdpuftrs/hdpu_cpustate.c -@@ -164,6 +164,7 @@ static struct platform_driver hdpu_cpustate_driver = { - .remove = hdpu_cpustate_remove, - .driver = { - .name = HDPU_CPUSTATE_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -248,3 +249,4 @@ module_exit(cpustate_exit); - - MODULE_AUTHOR("Brian Waite"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:" HDPU_CPUSTATE_NAME); -diff --git a/drivers/misc/hdpuftrs/hdpu_nexus.c b/drivers/misc/hdpuftrs/hdpu_nexus.c -index 2887b21..2fa36f7 100644 ---- a/drivers/misc/hdpuftrs/hdpu_nexus.c -+++ b/drivers/misc/hdpuftrs/hdpu_nexus.c -@@ -55,6 +55,7 @@ static struct platform_driver hdpu_nexus_driver = { - .remove = hdpu_nexus_remove, - .driver = { - .name = HDPU_NEXUS_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -151,3 +152,4 @@ module_exit(nexus_exit); - - MODULE_AUTHOR("Brian Waite"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:" HDPU_NEXUS_NAME); -diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c -index 21acecc..a28fc2f 100644 ---- a/drivers/mmc/host/at91_mci.c -+++ b/drivers/mmc/host/at91_mci.c -@@ -1075,3 +1075,4 @@ module_exit(at91_mci_exit); - MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver"); - MODULE_AUTHOR("Nick Randell"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:at91_mci"); -diff --git a/drivers/mmc/host/au1xmmc.c b/drivers/mmc/host/au1xmmc.c -index c3926eb..cc5f7bc 100644 ---- a/drivers/mmc/host/au1xmmc.c -+++ b/drivers/mmc/host/au1xmmc.c -@@ -998,6 +998,7 @@ static struct platform_driver au1xmmc_driver = { - .resume = NULL, - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -1018,5 +1019,6 @@ module_exit(au1xmmc_exit); - MODULE_AUTHOR("Advanced Micro Devices, Inc"); - MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:au1xxx-mmc"); - #endif - -diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c -index f2070a1..95f33e8 100644 ---- a/drivers/mmc/host/imxmmc.c -+++ b/drivers/mmc/host/imxmmc.c -@@ -1128,6 +1128,7 @@ static struct platform_driver imxmci_driver = { - .resume = imxmci_resume, - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - } - }; - -@@ -1147,3 +1148,4 @@ module_exit(imxmci_exit); - MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver"); - MODULE_AUTHOR("Sascha Hauer, Pengutronix"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:imx-mmc"); -diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c -index c9dfeb1..90c358b 100644 ---- a/drivers/mmc/host/omap.c -+++ b/drivers/mmc/host/omap.c -@@ -1255,6 +1255,7 @@ static struct platform_driver mmc_omap_driver = { - .resume = mmc_omap_resume, - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -1273,5 +1274,5 @@ module_exit(mmc_omap_exit); - - MODULE_DESCRIPTION("OMAP Multimedia Card driver"); - MODULE_LICENSE("GPL"); --MODULE_ALIAS(DRIVER_NAME); -+MODULE_ALIAS("platform:" DRIVER_NAME); - MODULE_AUTHOR("Juha Yrjölä"); -diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c -index 1ea8482..65210fc 100644 ---- a/drivers/mmc/host/pxamci.c -+++ b/drivers/mmc/host/pxamci.c -@@ -693,6 +693,7 @@ static struct platform_driver pxamci_driver = { - .resume = pxamci_resume, - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -711,3 +712,4 @@ module_exit(pxamci_exit); - - MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:pxa2xx-mci"); -diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c -index 4d5f374..be624a0 100644 ---- a/drivers/mmc/host/wbsd.c -+++ b/drivers/mmc/host/wbsd.c -@@ -1948,6 +1948,7 @@ static struct platform_driver wbsd_driver = { - .resume = wbsd_platform_resume, - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - }, - }; - -diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h -index 93b7fb2..a8d3280 100644 ---- a/drivers/net/ehea/ehea.h -+++ b/drivers/net/ehea/ehea.h -@@ -40,7 +40,7 @@ - #include - - #define DRV_NAME "ehea" --#define DRV_VERSION "EHEA_0089" -+#define DRV_VERSION "EHEA_0090" - - /* eHEA capability flags */ - #define DLPAR_PORT_ADD_REM 1 -@@ -371,6 +371,7 @@ struct ehea_port_res { - struct ehea_q_skb_arr rq2_skba; - struct ehea_q_skb_arr rq3_skba; - struct ehea_q_skb_arr sq_skba; -+ int sq_skba_size; - spinlock_t netif_queue; - int queue_stopped; - int swqe_refill_th; -diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c -index 07c742d..f460b62 100644 ---- a/drivers/net/ehea/ehea_main.c -+++ b/drivers/net/ehea/ehea_main.c -@@ -349,7 +349,8 @@ static void ehea_refill_rq1(struct ehea_port_res *pr, int index, int nr_of_wqes) - pr->rq1_skba.os_skbs = 0; - - if (unlikely(test_bit(__EHEA_STOP_XFER, &ehea_driver_flags))) { -- pr->rq1_skba.index = index; -+ if (nr_of_wqes > 0) -+ pr->rq1_skba.index = index; - pr->rq1_skba.os_skbs = fill_wqes; - return; - } -@@ -1464,7 +1465,9 @@ static int ehea_init_port_res(struct ehea_port *port, struct ehea_port_res *pr, - init_attr->act_nr_rwqes_rq2, - init_attr->act_nr_rwqes_rq3); - -- ret = ehea_init_q_skba(&pr->sq_skba, init_attr->act_nr_send_wqes + 1); -+ pr->sq_skba_size = init_attr->act_nr_send_wqes + 1; -+ -+ ret = ehea_init_q_skba(&pr->sq_skba, pr->sq_skba_size); - ret |= ehea_init_q_skba(&pr->rq1_skba, init_attr->act_nr_rwqes_rq1 + 1); - ret |= ehea_init_q_skba(&pr->rq2_skba, init_attr->act_nr_rwqes_rq2 + 1); - ret |= ehea_init_q_skba(&pr->rq3_skba, init_attr->act_nr_rwqes_rq3 + 1); -@@ -2621,6 +2624,22 @@ void ehea_purge_sq(struct ehea_qp *orig_qp) - } - } - -+void ehea_flush_sq(struct ehea_port *port) -+{ -+ int i; -+ -+ for (i = 0; i < port->num_def_qps + port->num_add_tx_qps; i++) { -+ struct ehea_port_res *pr = &port->port_res[i]; -+ int swqe_max = pr->sq_skba_size - 2 - pr->swqe_ll_count; -+ int k = 0; -+ while (atomic_read(&pr->swqe_avail) < swqe_max) { -+ msleep(5); -+ if (++k == 20) -+ break; -+ } -+ } -+} -+ - int ehea_stop_qps(struct net_device *dev) - { - struct ehea_port *port = netdev_priv(dev); -@@ -2845,6 +2864,7 @@ static void ehea_rereg_mrs(struct work_struct *work) - if (dev->flags & IFF_UP) { - down(&port->port_lock); - netif_stop_queue(dev); -+ ehea_flush_sq(port); - ret = ehea_stop_qps(dev); - if (ret) { - up(&port->port_lock); -diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c -index 419f533..9f088a4 100644 ---- a/drivers/net/forcedeth.c -+++ b/drivers/net/forcedeth.c -@@ -5316,8 +5316,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i - - /* check the workaround bit for correct mac address order */ - txreg = readl(base + NvRegTransmitPoll); -- if ((txreg & NVREG_TRANSMITPOLL_MAC_ADDR_REV) || -- (id->driver_data & DEV_HAS_CORRECT_MACADDR)) { -+ if (id->driver_data & DEV_HAS_CORRECT_MACADDR) { - /* mac address is already in correct order */ - dev->dev_addr[0] = (np->orig_mac[0] >> 0) & 0xff; - dev->dev_addr[1] = (np->orig_mac[0] >> 8) & 0xff; -@@ -5325,6 +5324,22 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i - dev->dev_addr[3] = (np->orig_mac[0] >> 24) & 0xff; - dev->dev_addr[4] = (np->orig_mac[1] >> 0) & 0xff; - dev->dev_addr[5] = (np->orig_mac[1] >> 8) & 0xff; -+ } else if (txreg & NVREG_TRANSMITPOLL_MAC_ADDR_REV) { -+ /* mac address is already in correct order */ -+ dev->dev_addr[0] = (np->orig_mac[0] >> 0) & 0xff; -+ dev->dev_addr[1] = (np->orig_mac[0] >> 8) & 0xff; -+ dev->dev_addr[2] = (np->orig_mac[0] >> 16) & 0xff; -+ dev->dev_addr[3] = (np->orig_mac[0] >> 24) & 0xff; -+ dev->dev_addr[4] = (np->orig_mac[1] >> 0) & 0xff; -+ dev->dev_addr[5] = (np->orig_mac[1] >> 8) & 0xff; -+ /* -+ * Set orig mac address back to the reversed version. -+ * This flag will be cleared during low power transition. -+ * Therefore, we should always put back the reversed address. -+ */ -+ np->orig_mac[0] = (dev->dev_addr[5] << 0) + (dev->dev_addr[4] << 8) + -+ (dev->dev_addr[3] << 16) + (dev->dev_addr[2] << 24); -+ np->orig_mac[1] = (dev->dev_addr[1] << 0) + (dev->dev_addr[0] << 8); - } else { - /* need to reverse mac address to correct order */ - dev->dev_addr[0] = (np->orig_mac[1] >> 8) & 0xff; -@@ -5595,7 +5610,9 @@ out: - static int nv_resume(struct pci_dev *pdev) - { - struct net_device *dev = pci_get_drvdata(pdev); -+ u8 __iomem *base = get_hwbase(dev); - int rc = 0; -+ u32 txreg; - - if (!netif_running(dev)) - goto out; -@@ -5606,6 +5623,11 @@ static int nv_resume(struct pci_dev *pdev) - pci_restore_state(pdev); - pci_enable_wake(pdev, PCI_D0, 0); - -+ /* restore mac address reverse flag */ -+ txreg = readl(base + NvRegTransmitPoll); -+ txreg |= NVREG_TRANSMITPOLL_MAC_ADDR_REV; -+ writel(txreg, base + NvRegTransmitPoll); -+ - rc = nv_open(dev); - out: - return rc; -diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c -index af869cf..940e204 100644 ---- a/drivers/net/fs_enet/fs_enet-main.c -+++ b/drivers/net/fs_enet/fs_enet-main.c -@@ -835,7 +835,8 @@ static int fs_enet_close(struct net_device *dev) - - netif_stop_queue(dev); - netif_carrier_off(dev); -- napi_disable(&fep->napi); -+ if (fep->fpi->use_napi) -+ napi_disable(&fep->napi); - phy_stop(fep->phydev); - - spin_lock_irqsave(&fep->lock, flags); -diff --git a/drivers/net/macb.c b/drivers/net/macb.c -index 1d210ed..489c7c3 100644 ---- a/drivers/net/macb.c -+++ b/drivers/net/macb.c -@@ -242,12 +242,12 @@ static int macb_mii_init(struct macb *bp) - /* Enable managment port */ - macb_writel(bp, NCR, MACB_BIT(MPE)); - -- bp->mii_bus.name = "MACB_mii_bus", -- bp->mii_bus.read = &macb_mdio_read, -- bp->mii_bus.write = &macb_mdio_write, -- bp->mii_bus.reset = &macb_mdio_reset, -- bp->mii_bus.id = bp->pdev->id, -- bp->mii_bus.priv = bp, -+ bp->mii_bus.name = "MACB_mii_bus"; -+ bp->mii_bus.read = &macb_mdio_read; -+ bp->mii_bus.write = &macb_mdio_write; -+ bp->mii_bus.reset = &macb_mdio_reset; -+ bp->mii_bus.id = bp->pdev->id; -+ bp->mii_bus.priv = bp; - bp->mii_bus.dev = &bp->dev->dev; - pdata = bp->pdev->dev.platform_data; - -@@ -1257,6 +1257,8 @@ static int __exit macb_remove(struct platform_device *pdev) - - if (dev) { - bp = netdev_priv(dev); -+ if (bp->phy_dev) -+ phy_disconnect(bp->phy_dev); - mdiobus_unregister(&bp->mii_bus); - kfree(bp->mii_bus.irq); - unregister_netdev(dev); -diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c -index 37b4239..15fcee5 100644 ---- a/drivers/net/sc92031.c -+++ b/drivers/net/sc92031.c -@@ -1446,6 +1446,7 @@ static int __devinit sc92031_probe(struct pci_dev *pdev, - } - - pci_set_drvdata(pdev, dev); -+ SET_NETDEV_DEV(dev, &pdev->dev); - - #if SC92031_USE_BAR == 0 - dev->mem_start = pci_resource_start(pdev, SC92031_USE_BAR); -diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c -index 853bce0..f226bca 100644 ---- a/drivers/net/sky2.c -+++ b/drivers/net/sky2.c -@@ -154,6 +154,7 @@ static const char *yukon2_name[] = { - "EC", /* 0xb6 */ - "FE", /* 0xb7 */ - "FE+", /* 0xb8 */ -+ "Supreme", /* 0xb9 */ - }; - - static void sky2_set_multicast(struct net_device *dev); -diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c -index 4020e9e..63a54e2 100644 ---- a/drivers/net/smc91x.c -+++ b/drivers/net/smc91x.c -@@ -1326,9 +1326,11 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) - SMC_SET_INT_MASK(mask); - spin_unlock(&lp->lock); - -+#ifndef CONFIG_NET_POLL_CONTROLLER - if (timeout == MAX_IRQ_LOOPS) - PRINTK("%s: spurious interrupt (mask = 0x%02x)\n", - dev->name, mask); -+#endif - DBG(3, "%s: Interrupt done (%d loops)\n", - dev->name, MAX_IRQ_LOOPS - timeout); - -diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c -index d4655b2..96043c5 100644 ---- a/drivers/net/tg3.c -+++ b/drivers/net/tg3.c -@@ -64,8 +64,8 @@ - - #define DRV_MODULE_NAME "tg3" - #define PFX DRV_MODULE_NAME ": " --#define DRV_MODULE_VERSION "3.89" --#define DRV_MODULE_RELDATE "April 03, 2008" -+#define DRV_MODULE_VERSION "3.90" -+#define DRV_MODULE_RELDATE "April 12, 2008" - - #define TG3_DEF_MAC_MODE 0 - #define TG3_DEF_RX_MODE 0 -@@ -12578,7 +12578,8 @@ static int __devinit tg3_init_one(struct pci_dev *pdev, - const struct pci_device_id *ent) - { - static int tg3_version_printed = 0; -- unsigned long tg3reg_base, tg3reg_len; -+ resource_size_t tg3reg_base; -+ unsigned long tg3reg_len; - struct net_device *dev; - struct tg3 *tp; - int err, pm_cap; -diff --git a/drivers/net/tun.c b/drivers/net/tun.c -index 7b816a0..5b5d875 100644 ---- a/drivers/net/tun.c -+++ b/drivers/net/tun.c -@@ -67,9 +67,42 @@ - #include - #include - -+/* Uncomment to enable debugging */ -+/* #define TUN_DEBUG 1 */ -+ - #ifdef TUN_DEBUG - static int debug; -+ -+#define DBG if(tun->debug)printk -+#define DBG1 if(debug==2)printk -+#else -+#define DBG( a... ) -+#define DBG1( a... ) -+#endif -+ -+struct tun_struct { -+ struct list_head list; -+ unsigned long flags; -+ int attached; -+ uid_t owner; -+ gid_t group; -+ -+ wait_queue_head_t read_wait; -+ struct sk_buff_head readq; -+ -+ struct net_device *dev; -+ -+ struct fasync_struct *fasync; -+ -+ unsigned long if_flags; -+ u8 dev_addr[ETH_ALEN]; -+ u32 chr_filter[2]; -+ u32 net_filter[2]; -+ -+#ifdef TUN_DEBUG -+ int debug; - #endif -+}; - - /* Network device part of the driver */ - -@@ -253,8 +286,11 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun, struct iovec *iv, - return -EFAULT; - } - -- if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) -+ if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) { - align = NET_IP_ALIGN; -+ if (unlikely(len < ETH_HLEN)) -+ return -EINVAL; -+ } - - if (!(skb = alloc_skb(len + align, GFP_KERNEL))) { - tun->dev->stats.rx_dropped++; -diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c -index 8cc3166..0ee4c16 100644 ---- a/drivers/net/ucc_geth.c -+++ b/drivers/net/ucc_geth.c -@@ -3833,6 +3833,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma - struct device_node *phy; - int err, ucc_num, max_speed = 0; - const phandle *ph; -+ const u32 *fixed_link; - const unsigned int *prop; - const char *sprop; - const void *mac_addr; -@@ -3923,18 +3924,38 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma - - ug_info->uf_info.regs = res.start; - ug_info->uf_info.irq = irq_of_parse_and_map(np, 0); -+ fixed_link = of_get_property(np, "fixed-link", NULL); -+ if (fixed_link) { -+ ug_info->mdio_bus = 0; -+ ug_info->phy_address = fixed_link[0]; -+ phy = NULL; -+ } else { -+ ph = of_get_property(np, "phy-handle", NULL); -+ phy = of_find_node_by_phandle(*ph); - -- ph = of_get_property(np, "phy-handle", NULL); -- phy = of_find_node_by_phandle(*ph); -+ if (phy == NULL) -+ return -ENODEV; - -- if (phy == NULL) -- return -ENODEV; -+ /* set the PHY address */ -+ prop = of_get_property(phy, "reg", NULL); -+ if (prop == NULL) -+ return -1; -+ ug_info->phy_address = *prop; -+ -+ /* Set the bus id */ -+ mdio = of_get_parent(phy); -+ -+ if (mdio == NULL) -+ return -1; - -- /* set the PHY address */ -- prop = of_get_property(phy, "reg", NULL); -- if (prop == NULL) -- return -1; -- ug_info->phy_address = *prop; -+ err = of_address_to_resource(mdio, 0, &res); -+ of_node_put(mdio); -+ -+ if (err) -+ return -1; -+ -+ ug_info->mdio_bus = res.start; -+ } - - /* get the phy interface type, or default to MII */ - prop = of_get_property(np, "phy-connection-type", NULL); -@@ -3979,20 +4000,6 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma - ug_info->numThreadsRx = UCC_GETH_NUM_OF_THREADS_4; - } - -- /* Set the bus id */ -- mdio = of_get_parent(phy); -- -- if (mdio == NULL) -- return -1; -- -- err = of_address_to_resource(mdio, 0, &res); -- of_node_put(mdio); -- -- if (err) -- return -1; -- -- ug_info->mdio_bus = res.start; -- - if (netif_msg_probe(&debug)) - printk(KERN_INFO "ucc_geth: UCC%1d at 0x%8x (irq = %d) \n", - ug_info->uf_info.ucc_num + 1, ug_info->uf_info.regs, -diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig -index a3df09e..8005dd1 100644 ---- a/drivers/net/wan/Kconfig -+++ b/drivers/net/wan/Kconfig -@@ -150,9 +150,13 @@ config HDLC_FR - - config HDLC_PPP - tristate "Synchronous Point-to-Point Protocol (PPP) support" -- depends on HDLC -+ depends on HDLC && BROKEN - help - Generic HDLC driver supporting PPP over WAN connections. -+ This module is currently broken and will cause a kernel panic -+ when a device configured in PPP mode is activated. -+ -+ It will be replaced by new PPP implementation in Linux 2.6.26. - - If unsure, say N. - -diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c -index 385e145..6849685 100644 ---- a/drivers/pcmcia/at91_cf.c -+++ b/drivers/pcmcia/at91_cf.c -@@ -419,3 +419,4 @@ module_exit(at91_cf_exit); - MODULE_DESCRIPTION("AT91 Compact Flash Driver"); - MODULE_AUTHOR("David Brownell"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:at91_cf"); -diff --git a/drivers/pcmcia/omap_cf.c b/drivers/pcmcia/omap_cf.c -index 2df216b..bb6db3a 100644 ---- a/drivers/pcmcia/omap_cf.c -+++ b/drivers/pcmcia/omap_cf.c -@@ -344,6 +344,7 @@ static int omap_cf_resume(struct platform_device *pdev) - static struct platform_driver omap_cf_driver = { - .driver = { - .name = (char *) driver_name, -+ .owner = THIS_MODULE, - }, - .remove = __exit_p(omap_cf_remove), - .suspend = omap_cf_suspend, -@@ -368,3 +369,4 @@ module_exit(omap_cf_exit); - - MODULE_DESCRIPTION("OMAP CF Driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:omap_cf"); -diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c -index e439044..9414163 100644 ---- a/drivers/pcmcia/pxa2xx_base.c -+++ b/drivers/pcmcia/pxa2xx_base.c -@@ -239,6 +239,7 @@ static struct platform_driver pxa2xx_pcmcia_driver = { - .resume = pxa2xx_drv_pcmcia_resume, - .driver = { - .name = "pxa2xx-pcmcia", -+ .owner = THIS_MODULE, - }, - }; - -@@ -258,3 +259,4 @@ module_exit(pxa2xx_pcmcia_exit); - MODULE_AUTHOR("Stefan Eletzhofer and Ian Molton "); - MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:pxa2xx-pcmcia"); -diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c -index b485170..dcdc142 100644 ---- a/drivers/rtc/rtc-cmos.c -+++ b/drivers/rtc/rtc-cmos.c -@@ -198,9 +198,8 @@ static int cmos_set_alarm(struct device *dev, struct rtc_wkalrm *t) - - /* Writing 0xff means "don't care" or "match all". */ - -- mon = t->time.tm_mon; -- mon = (mon < 12) ? BIN2BCD(mon) : 0xff; -- mon++; -+ mon = t->time.tm_mon + 1; -+ mon = (mon <= 12) ? BIN2BCD(mon) : 0xff; - - mday = t->time.tm_mday; - mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff; -diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c -index 430997e..55492fa 100644 ---- a/drivers/serial/atmel_serial.c -+++ b/drivers/serial/atmel_serial.c -@@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit); - MODULE_AUTHOR("Rick Bronson"); - MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:atmel_usart"); -diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c -index 0aa345b..46bb47f 100644 ---- a/drivers/serial/bfin_5xx.c -+++ b/drivers/serial/bfin_5xx.c -@@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = { - .resume = bfin_serial_resume, - .driver = { - .name = "bfin-uart", -+ .owner = THIS_MODULE, - }, - }; - -@@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li "); - MODULE_DESCRIPTION("Blackfin generic serial port driver"); - MODULE_LICENSE("GPL"); - MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); -+MODULE_ALIAS("platform:bfin-uart"); -diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c -index 56af1f5..16ba9ac 100644 ---- a/drivers/serial/imx.c -+++ b/drivers/serial/imx.c -@@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = { - .resume = serial_imx_resume, - .driver = { - .name = "imx-uart", -+ .owner = THIS_MODULE, - }, - }; - -@@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit); - MODULE_AUTHOR("Sascha Hauer"); - MODULE_DESCRIPTION("IMX generic serial port driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:imx-uart"); -diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c -index e76fc72..7e164e0 100644 ---- a/drivers/serial/mcf.c -+++ b/drivers/serial/mcf.c -@@ -649,5 +649,6 @@ module_exit(mcf_exit); - MODULE_AUTHOR("Greg Ungerer "); - MODULE_DESCRIPTION("Freescale ColdFire UART driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:mcfuart"); - - /****************************************************************************/ -diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c -index a638f23..d93b357 100644 ---- a/drivers/serial/mpc52xx_uart.c -+++ b/drivers/serial/mpc52xx_uart.c -@@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev) - } - #endif - -+/* work with hotplug and coldplug */ -+MODULE_ALIAS("platform:mpc52xx-psc"); - - static struct platform_driver mpc52xx_uart_platform_driver = { - .probe = mpc52xx_uart_probe, -diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c -index cb3a919..e8819c4 100644 ---- a/drivers/serial/mpsc.c -+++ b/drivers/serial/mpsc.c -@@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = { - .remove = mpsc_drv_remove, - .driver = { - .name = MPSC_CTLR_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $"); - MODULE_VERSION(MPSC_VERSION); - MODULE_LICENSE("GPL"); - MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); -+MODULE_ALIAS("platform:" MPSC_CTLR_NAME); -diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c -index b56f7db..3123ffe 100644 ---- a/drivers/serial/netx-serial.c -+++ b/drivers/serial/netx-serial.c -@@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = { - - .driver = { - .name = DRIVER_NAME, -+ .owner = THIS_MODULE, - }, - }; - -@@ -745,3 +746,4 @@ module_exit(netx_serial_exit); - MODULE_AUTHOR("Sascha Hauer"); - MODULE_DESCRIPTION("NetX serial port driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:" DRIVER_NAME); -diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c -index 8d01c59..d0e5a79 100644 ---- a/drivers/serial/pnx8xxx_uart.c -+++ b/drivers/serial/pnx8xxx_uart.c -@@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc."); - MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); - MODULE_LICENSE("GPL"); - MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); -+MODULE_ALIAS("platform:pnx8xxx-uart"); -diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c -index 352fcb8..b4f7ffb 100644 ---- a/drivers/serial/pxa.c -+++ b/drivers/serial/pxa.c -@@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = { - .resume = serial_pxa_resume, - .driver = { - .name = "pxa2xx-uart", -+ .owner = THIS_MODULE, - }, - }; - -@@ -861,4 +862,4 @@ module_init(serial_pxa_init); - module_exit(serial_pxa_exit); - - MODULE_LICENSE("GPL"); -- -+MODULE_ALIAS("platform:pxa2xx-uart"); -diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c -index 45de193..4ffa258 100644 ---- a/drivers/serial/s3c2410.c -+++ b/drivers/serial/s3c2410.c -@@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole); - MODULE_LICENSE("GPL"); - MODULE_AUTHOR("Ben Dooks "); - MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); -+MODULE_ALIAS("platform:s3c2400-uart"); -+MODULE_ALIAS("platform:s3c2410-uart"); -+MODULE_ALIAS("platform:s3c2412-uart"); -+MODULE_ALIAS("platform:s3c2440-uart"); -diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c -index 58a83c2..67b2338 100644 ---- a/drivers/serial/sa1100.c -+++ b/drivers/serial/sa1100.c -@@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = { - .resume = sa1100_serial_resume, - .driver = { - .name = "sa11x0-uart", -+ .owner = THIS_MODULE, - }, - }; - -@@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd"); - MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); - MODULE_LICENSE("GPL"); - MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); -+MODULE_ALIAS("platform:sa11x0-uart"); -diff --git a/drivers/serial/sc26xx.c b/drivers/serial/sc26xx.c -index a350b6d..ae2a9e2 100644 ---- a/drivers/serial/sc26xx.c -+++ b/drivers/serial/sc26xx.c -@@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = { - .remove = __devexit_p(sc26xx_driver_remove), - .driver = { - .name = "SC26xx", -+ .owner = THIS_MODULE, - }, - }; - -@@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer"); - MODULE_DESCRIPTION("SC681/SC2692 serial driver"); - MODULE_VERSION("1.0"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:SC26xx"); -diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c -index 9d244d1..eff5930 100644 ---- a/drivers/serial/sh-sci.c -+++ b/drivers/serial/sh-sci.c -@@ -1552,3 +1552,4 @@ module_init(sci_init); - module_exit(sci_exit); - - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:sh-sci"); -diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c -index 4e06ab6..b565d5a 100644 ---- a/drivers/serial/uartlite.c -+++ b/drivers/serial/uartlite.c -@@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev) - return ulite_release(&pdev->dev); - } - -+/* work with hotplug and coldplug */ -+MODULE_ALIAS("platform:uartlite"); -+ - static struct platform_driver ulite_platform_driver = { - .probe = ulite_probe, - .remove = __devexit_p(ulite_remove), -diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c -index 6fd51b0..98ab649 100644 ---- a/drivers/serial/vr41xx_siu.c -+++ b/drivers/serial/vr41xx_siu.c -@@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void) - - module_init(vr41xx_siu_init); - module_exit(vr41xx_siu_exit); -+ -+MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:SIU"); -diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c -index e75103a..b7476b8 100644 ---- a/drivers/spi/spi_s3c24xx.c -+++ b/drivers/spi/spi_s3c24xx.c -@@ -192,8 +192,11 @@ static int s3c24xx_spi_txrx(struct spi_device *spi, struct spi_transfer *t) - hw->len = t->len; - hw->count = 0; - -+ init_completion(&hw->done); -+ - /* send the first byte */ - writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT); -+ - wait_for_completion(&hw->done); - - return hw->count; -@@ -235,6 +238,7 @@ static irqreturn_t s3c24xx_spi_irq(int irq, void *dev) - - static int __init s3c24xx_spi_probe(struct platform_device *pdev) - { -+ struct s3c2410_spi_info *pdata; - struct s3c24xx_spi *hw; - struct spi_master *master; - struct resource *res; -@@ -251,10 +255,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) - memset(hw, 0, sizeof(struct s3c24xx_spi)); - - hw->master = spi_master_get(master); -- hw->pdata = pdev->dev.platform_data; -+ hw->pdata = pdata = pdev->dev.platform_data; - hw->dev = &pdev->dev; - -- if (hw->pdata == NULL) { -+ if (pdata == NULL) { - dev_err(&pdev->dev, "No platform data supplied\n"); - err = -ENOENT; - goto err_no_pdata; -@@ -263,6 +267,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) - platform_set_drvdata(pdev, hw); - init_completion(&hw->done); - -+ /* setup the master state. */ -+ -+ master->num_chipselect = hw->pdata->num_cs; -+ - /* setup the state for the bitbang driver */ - - hw->bitbang.master = hw->master; -@@ -330,13 +338,13 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) - - /* setup any gpio we can */ - -- if (!hw->pdata->set_cs) { -+ if (!pdata->set_cs) { - hw->set_cs = s3c24xx_spi_gpiocs; - -- s3c2410_gpio_setpin(hw->pdata->pin_cs, 1); -- s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT); -+ s3c2410_gpio_setpin(pdata->pin_cs, 1); -+ s3c2410_gpio_cfgpin(pdata->pin_cs, S3C2410_GPIO_OUTPUT); - } else -- hw->set_cs = hw->pdata->set_cs; -+ hw->set_cs = pdata->set_cs; - - /* register our spi controller */ - -diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c -index 8b86e53..7f79bbf 100644 ---- a/drivers/thermal/thermal.c -+++ b/drivers/thermal/thermal.c -@@ -196,6 +196,10 @@ static struct device_attribute trip_point_attrs[] = { - __ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL), - __ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL), - __ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL), -+ __ATTR(trip_point_10_type, 0444, trip_point_type_show, NULL), -+ __ATTR(trip_point_10_temp, 0444, trip_point_temp_show, NULL), -+ __ATTR(trip_point_11_type, 0444, trip_point_type_show, NULL), -+ __ATTR(trip_point_11_temp, 0444, trip_point_temp_show, NULL), - }; - - #define TRIP_POINT_ATTR_ADD(_dev, _index, result) \ -diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c -index 1194f5e..01072f4 100644 ---- a/drivers/video/fbmem.c -+++ b/drivers/video/fbmem.c -@@ -1521,6 +1521,7 @@ module_init(fbmem_init); - static void __exit - fbmem_exit(void) - { -+ remove_proc_entry("fb", NULL); - class_destroy(fb_class); - unregister_chrdev(FB_MAJOR, "fb"); - } -diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c -index 3e8683d..a99d46f 100644 ---- a/fs/ext2/xattr.c -+++ b/fs/ext2/xattr.c -@@ -835,7 +835,7 @@ ext2_xattr_cache_insert(struct buffer_head *bh) - struct mb_cache_entry *ce; - int error; - -- ce = mb_cache_entry_alloc(ext2_xattr_cache); -+ ce = mb_cache_entry_alloc(ext2_xattr_cache, GFP_NOFS); - if (!ce) - return -ENOMEM; - error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash); -diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c -index a6ea4d6..4285654 100644 ---- a/fs/ext3/xattr.c -+++ b/fs/ext3/xattr.c -@@ -1126,7 +1126,7 @@ ext3_xattr_cache_insert(struct buffer_head *bh) - struct mb_cache_entry *ce; - int error; - -- ce = mb_cache_entry_alloc(ext3_xattr_cache); -+ ce = mb_cache_entry_alloc(ext3_xattr_cache, GFP_NOFS); - if (!ce) { - ea_bdebug(bh, "out of memory"); - return; -diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c -index d796213..e9054c1 100644 ---- a/fs/ext4/xattr.c -+++ b/fs/ext4/xattr.c -@@ -1386,7 +1386,7 @@ ext4_xattr_cache_insert(struct buffer_head *bh) - struct mb_cache_entry *ce; - int error; - -- ce = mb_cache_entry_alloc(ext4_xattr_cache); -+ ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS); - if (!ce) { - ea_bdebug(bh, "out of memory"); - return; -diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c -index f9c5dd6..dcc2734 100644 ---- a/fs/jffs2/file.c -+++ b/fs/jffs2/file.c -@@ -129,7 +129,7 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping, - struct inode *inode = mapping->host; - struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); - pgoff_t index = pos >> PAGE_CACHE_SHIFT; -- uint32_t pageofs = pos & (PAGE_CACHE_SIZE - 1); -+ uint32_t pageofs = index << PAGE_CACHE_SHIFT; - int ret = 0; - - pg = __grab_cache_page(mapping, index); -diff --git a/fs/locks.c b/fs/locks.c -index d83fab1..43c0af2 100644 ---- a/fs/locks.c -+++ b/fs/locks.c -@@ -1801,17 +1801,21 @@ again: - if (error) - goto out; - -- for (;;) { -- error = vfs_lock_file(filp, cmd, file_lock, NULL); -- if (error != -EAGAIN || cmd == F_SETLK) -- break; -- error = wait_event_interruptible(file_lock->fl_wait, -- !file_lock->fl_next); -- if (!error) -- continue; -+ if (filp->f_op && filp->f_op->lock != NULL) -+ error = filp->f_op->lock(filp, cmd, file_lock); -+ else { -+ for (;;) { -+ error = posix_lock_file(filp, file_lock, NULL); -+ if (error != -EAGAIN || cmd == F_SETLK) -+ break; -+ error = wait_event_interruptible(file_lock->fl_wait, -+ !file_lock->fl_next); -+ if (!error) -+ continue; - -- locks_delete_block(file_lock); -- break; -+ locks_delete_block(file_lock); -+ break; -+ } - } - - /* -@@ -1925,17 +1929,21 @@ again: - if (error) - goto out; - -- for (;;) { -- error = vfs_lock_file(filp, cmd, file_lock, NULL); -- if (error != -EAGAIN || cmd == F_SETLK64) -- break; -- error = wait_event_interruptible(file_lock->fl_wait, -- !file_lock->fl_next); -- if (!error) -- continue; -+ if (filp->f_op && filp->f_op->lock != NULL) -+ error = filp->f_op->lock(filp, cmd, file_lock); -+ else { -+ for (;;) { -+ error = posix_lock_file(filp, file_lock, NULL); -+ if (error != -EAGAIN || cmd == F_SETLK64) -+ break; -+ error = wait_event_interruptible(file_lock->fl_wait, -+ !file_lock->fl_next); -+ if (!error) -+ continue; - -- locks_delete_block(file_lock); -- break; -+ locks_delete_block(file_lock); -+ break; -+ } - } - - /* -diff --git a/fs/mbcache.c b/fs/mbcache.c -index eb31b73..ec88ff3 100644 ---- a/fs/mbcache.c -+++ b/fs/mbcache.c -@@ -399,11 +399,11 @@ mb_cache_destroy(struct mb_cache *cache) - * if no more memory was available. - */ - struct mb_cache_entry * --mb_cache_entry_alloc(struct mb_cache *cache) -+mb_cache_entry_alloc(struct mb_cache *cache, gfp_t gfp_flags) - { - struct mb_cache_entry *ce; - -- ce = kmem_cache_alloc(cache->c_entry_cache, GFP_KERNEL); -+ ce = kmem_cache_alloc(cache->c_entry_cache, gfp_flags); - if (ce) { - atomic_inc(&cache->c_entry_count); - INIT_LIST_HEAD(&ce->e_lru_list); -diff --git a/include/asm-arm/arch-s3c2410/spi.h b/include/asm-arm/arch-s3c2410/spi.h -index 7ca0ed9..352d338 100644 ---- a/include/asm-arm/arch-s3c2410/spi.h -+++ b/include/asm-arm/arch-s3c2410/spi.h -@@ -15,6 +15,7 @@ - - struct s3c2410_spi_info { - unsigned long pin_cs; /* simple gpio cs */ -+ unsigned int num_cs; /* total chipselects */ - - void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); - }; -diff --git a/include/asm-um/tlb.h b/include/asm-um/tlb.h -index 39fc475..5240fa1 100644 ---- a/include/asm-um/tlb.h -+++ b/include/asm-um/tlb.h -@@ -1,6 +1,7 @@ - #ifndef __UM_TLB_H - #define __UM_TLB_H - -+#include - #include - #include - #include -diff --git a/include/linux/Kbuild b/include/linux/Kbuild -index 9cdd12a..cedbbd8 100644 ---- a/include/linux/Kbuild -+++ b/include/linux/Kbuild -@@ -86,6 +86,7 @@ header-y += if_plip.h - header-y += if_ppp.h - header-y += if_slip.h - header-y += if_strip.h -+header-y += if_tun.h - header-y += if_tunnel.h - header-y += in6.h - header-y += in_route.h -@@ -229,7 +230,6 @@ unifdef-y += if_link.h - unifdef-y += if_pppol2tp.h - unifdef-y += if_pppox.h - unifdef-y += if_tr.h --unifdef-y += if_tun.h - unifdef-y += if_vlan.h - unifdef-y += if_wanpipe.h - unifdef-y += igmp.h -diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h -index 72f1c5f..8c71fe2 100644 ---- a/include/linux/if_tun.h -+++ b/include/linux/if_tun.h -@@ -18,47 +18,8 @@ - #ifndef __IF_TUN_H - #define __IF_TUN_H - --/* Uncomment to enable debugging */ --/* #define TUN_DEBUG 1 */ -- - #include - --#ifdef __KERNEL__ -- --#ifdef TUN_DEBUG --#define DBG if(tun->debug)printk --#define DBG1 if(debug==2)printk --#else --#define DBG( a... ) --#define DBG1( a... ) --#endif -- --struct tun_struct { -- struct list_head list; -- unsigned long flags; -- int attached; -- uid_t owner; -- gid_t group; -- -- wait_queue_head_t read_wait; -- struct sk_buff_head readq; -- -- struct net_device *dev; -- -- struct fasync_struct *fasync; -- -- unsigned long if_flags; -- u8 dev_addr[ETH_ALEN]; -- u32 chr_filter[2]; -- u32 net_filter[2]; -- --#ifdef TUN_DEBUG -- int debug; --#endif --}; -- --#endif /* __KERNEL__ */ -- - /* Read queue size */ - #define TUN_READQ_SIZE 500 - -diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h -index 4aaefc3..134c8e5 100644 ---- a/include/linux/ipv6.h -+++ b/include/linux/ipv6.h -@@ -53,7 +53,7 @@ struct ipv6_opt_hdr { - /* - * TLV encoded option data follows. - */ --}; -+} __attribute__ ((packed)); /* required for some archs */ - - #define ipv6_destopt_hdr ipv6_opt_hdr - #define ipv6_hopopt_hdr ipv6_opt_hdr -diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h -index 99e044b..a09b84e 100644 ---- a/include/linux/mbcache.h -+++ b/include/linux/mbcache.h -@@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *); - - /* Functions on cache entries */ - --struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); -+struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); - int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, - sector_t, unsigned int[]); - void mb_cache_entry_release(struct mb_cache_entry *); -diff --git a/include/linux/thermal.h b/include/linux/thermal.h -index 818ca1c..90c1c19 100644 ---- a/include/linux/thermal.h -+++ b/include/linux/thermal.h -@@ -50,7 +50,7 @@ struct thermal_cooling_device_ops { - }; - - #define THERMAL_TRIPS_NONE -1 --#define THERMAL_MAX_TRIPS 10 -+#define THERMAL_MAX_TRIPS 12 - #define THERMAL_NAME_LENGTH 20 - struct thermal_cooling_device { - int id; -diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h -index ba33db0..7040a78 100644 ---- a/include/net/inet_ecn.h -+++ b/include/net/inet_ecn.h -@@ -47,7 +47,7 @@ static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner) - } while (0) - - #define IP6_ECN_flow_xmit(sk, label) do { \ -- if (INET_ECN_is_capable(inet_sk(sk)->tos)) \ -+ if (INET_ECN_is_capable(inet6_sk(sk)->tclass)) \ - (label) |= htonl(INET_ECN_ECT_0 << 20); \ - } while (0) - -diff --git a/include/net/sctp/command.h b/include/net/sctp/command.h -index 10ae2da..35b1e83 100644 ---- a/include/net/sctp/command.h -+++ b/include/net/sctp/command.h -@@ -104,6 +104,7 @@ typedef enum { - SCTP_CMD_ADAPTATION_IND, /* generate and send adaptation event */ - SCTP_CMD_ASSOC_SHKEY, /* generate the association shared keys */ - SCTP_CMD_T1_RETRAN, /* Mark for retransmission after T1 timeout */ -+ SCTP_CMD_UPDATE_INITTAG, /* Update peer inittag */ - SCTP_CMD_LAST - } sctp_verb_t; - -diff --git a/include/net/sctp/ulpevent.h b/include/net/sctp/ulpevent.h -index 9bcfc12..7ea12e8 100644 ---- a/include/net/sctp/ulpevent.h -+++ b/include/net/sctp/ulpevent.h -@@ -67,7 +67,7 @@ struct sctp_ulpevent { - }; - - /* Retrieve the skb this event sits inside of. */ --static inline struct sk_buff *sctp_event2skb(struct sctp_ulpevent *ev) -+static inline struct sk_buff *sctp_event2skb(const struct sctp_ulpevent *ev) - { - return container_of((void *)ev, struct sk_buff, cb); - } -diff --git a/kernel/printk.c b/kernel/printk.c -index c46a20a..bdd4ea8 100644 ---- a/kernel/printk.c -+++ b/kernel/printk.c -@@ -643,8 +643,21 @@ static int acquire_console_semaphore_for_printk(unsigned int cpu) - { - int retval = 0; - -- if (can_use_console(cpu)) -- retval = !try_acquire_console_sem(); -+ if (!try_acquire_console_sem()) { -+ retval = 1; -+ -+ /* -+ * If we can't use the console, we need to release -+ * the console semaphore by hand to avoid flushing -+ * the buffer. We need to hold the console semaphore -+ * in order to do this test safely. -+ */ -+ if (!can_use_console(cpu)) { -+ console_locked = 0; -+ up(&console_sem); -+ retval = 0; -+ } -+ } - printk_cpu = UINT_MAX; - spin_unlock(&logbuf_lock); - return retval; -diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c -index 86a9337..0080968 100644 ---- a/kernel/sched_fair.c -+++ b/kernel/sched_fair.c -@@ -510,10 +510,8 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) - - if (!initial) { - /* sleeps upto a single latency don't count. */ -- if (sched_feat(NEW_FAIR_SLEEPERS)) { -- vruntime -= calc_delta_fair(sysctl_sched_latency, -- &cfs_rq->load); -- } -+ if (sched_feat(NEW_FAIR_SLEEPERS)) -+ vruntime -= sysctl_sched_latency; - - /* ensure we never gain time by being placed backwards. */ - vruntime = max_vruntime(se->vruntime, vruntime); -diff --git a/mm/oom_kill.c b/mm/oom_kill.c -index f255eda..beb592f 100644 ---- a/mm/oom_kill.c -+++ b/mm/oom_kill.c -@@ -423,7 +423,7 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask) - struct task_struct *p; - - cgroup_lock(); -- rcu_read_lock(); -+ read_lock(&tasklist_lock); - retry: - p = select_bad_process(&points, mem); - if (PTR_ERR(p) == -1UL) -@@ -436,7 +436,7 @@ retry: - "Memory cgroup out of memory")) - goto retry; - out: -- rcu_read_unlock(); -+ read_unlock(&tasklist_lock); - cgroup_unlock(); - } - #endif -diff --git a/mm/sparse.c b/mm/sparse.c -index f6a43c0..98d6b39 100644 ---- a/mm/sparse.c -+++ b/mm/sparse.c -@@ -149,8 +149,18 @@ static inline int sparse_early_nid(struct mem_section *section) - /* Record a memory area against a node. */ - void __init memory_present(int nid, unsigned long start, unsigned long end) - { -+ unsigned long max_arch_pfn = 1UL << (MAX_PHYSMEM_BITS-PAGE_SHIFT); - unsigned long pfn; - -+ /* -+ * Sanity checks - do not allow an architecture to pass -+ * in larger pfns than the maximum scope of sparsemem: -+ */ -+ if (start >= max_arch_pfn) -+ return; -+ if (end >= max_arch_pfn) -+ end = max_arch_pfn; -+ - start &= PAGE_SECTION_MASK; - for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { - unsigned long section = pfn_to_section_nr(pfn); -diff --git a/mm/vmstat.c b/mm/vmstat.c -index 422d960..7c7286e 100644 ---- a/mm/vmstat.c -+++ b/mm/vmstat.c -@@ -388,6 +388,7 @@ static char * const migratetype_names[MIGRATE_TYPES] = { - "Reclaimable", - "Movable", - "Reserve", -+ "Isolate", - }; - - static void *frag_start(struct seq_file *m, loff_t *pos) -diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c -index 5f4eb73..57aeba7 100644 ---- a/net/ax25/ax25_uid.c -+++ b/net/ax25/ax25_uid.c -@@ -218,9 +218,11 @@ void __exit ax25_uid_free(void) - struct hlist_node *node; - - write_lock(&ax25_uid_lock); -+again: - ax25_uid_for_each(ax25_uid, node, &ax25_uid_list) { - hlist_del_init(&ax25_uid->uid_node); - ax25_uid_put(ax25_uid); -+ goto again; - } - write_unlock(&ax25_uid_lock); - } -diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c -index 1c0efd8..af7e8be 100644 ---- a/net/bridge/br_netfilter.c -+++ b/net/bridge/br_netfilter.c -@@ -110,7 +110,8 @@ static inline __be16 pppoe_proto(const struct sk_buff *skb) - * ipt_REJECT needs it. Future netfilter modules might - * require us to fill additional fields. */ - static struct net_device __fake_net_device = { -- .hard_header_len = ETH_HLEN -+ .hard_header_len = ETH_HLEN, -+ .nd_net = &init_net, - }; - - static struct rtable __fake_rtable = { -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index 0d0fd28..6087013 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -2131,8 +2131,8 @@ EXPORT_SYMBOL_GPL(skb_pull_rcsum); - * @features: features for the output path (see dev->features) - * - * This function performs segmentation on the given skb. It returns -- * the segment at the given position. It returns NULL if there are -- * no more segments to generate, or when an error is encountered. -+ * a pointer to the first in a list of new skbs for the segments. -+ * In case of error it returns ERR_PTR(err). - */ - struct sk_buff *skb_segment(struct sk_buff *skb, int features) - { -diff --git a/net/core/sock.c b/net/core/sock.c -index 2654c14..7a0567b 100644 ---- a/net/core/sock.c -+++ b/net/core/sock.c -@@ -1725,7 +1725,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) - sk->sk_rcvtimeo = MAX_SCHEDULE_TIMEOUT; - sk->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT; - -- sk->sk_stamp = ktime_set(-1L, -1L); -+ sk->sk_stamp = ktime_set(-1L, 0); - - atomic_set(&sk->sk_refcnt, 1); - atomic_set(&sk->sk_drops, 0); -diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h -index 287a62b..ba2ef94 100644 ---- a/net/dccp/dccp.h -+++ b/net/dccp/dccp.h -@@ -325,6 +325,12 @@ static inline int dccp_bad_service_code(const struct sock *sk, - * This is used for transmission as well as for reception. - */ - struct dccp_skb_cb { -+ union { -+ struct inet_skb_parm h4; -+#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) -+ struct inet6_skb_parm h6; -+#endif -+ } header; - __u8 dccpd_type:4; - __u8 dccpd_ccval:4; - __u8 dccpd_reset_code, -diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c -index 474075a..b337044 100644 ---- a/net/dccp/ipv4.c -+++ b/net/dccp/ipv4.c -@@ -489,7 +489,6 @@ static int dccp_v4_send_response(struct sock *sk, struct request_sock *req, - - dh->dccph_checksum = dccp_v4_csum_finish(skb, ireq->loc_addr, - ireq->rmt_addr); -- memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); - err = ip_build_and_send_pkt(skb, sk, ireq->loc_addr, - ireq->rmt_addr, - ireq->opt); -diff --git a/net/dccp/output.c b/net/dccp/output.c -index 3b763db..3d7d628 100644 ---- a/net/dccp/output.c -+++ b/net/dccp/output.c -@@ -126,7 +126,6 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb) - - DCCP_INC_STATS(DCCP_MIB_OUTSEGS); - -- memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); - err = icsk->icsk_af_ops->queue_xmit(skb, 0); - return net_xmit_eval(err); - } -diff --git a/net/dccp/proto.c b/net/dccp/proto.c -index e3f5d37..c91d3c1 100644 ---- a/net/dccp/proto.c -+++ b/net/dccp/proto.c -@@ -1057,6 +1057,9 @@ static int __init dccp_init(void) - int ehash_order, bhash_order, i; - int rc = -ENOBUFS; - -+ BUILD_BUG_ON(sizeof(struct dccp_skb_cb) > -+ FIELD_SIZEOF(struct sk_buff, cb)); -+ - dccp_hashinfo.bind_bucket_cachep = - kmem_cache_create("dccp_bind_bucket", - sizeof(struct inet_bind_bucket), 0, -diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c -index a7b4175..a80839b 100644 ---- a/net/ethernet/eth.c -+++ b/net/ethernet/eth.c -@@ -301,7 +301,7 @@ static int eth_change_mtu(struct net_device *dev, int new_mtu) - static int eth_validate_addr(struct net_device *dev) - { - if (!is_valid_ether_addr(dev->dev_addr)) -- return -EINVAL; -+ return -EADDRNOTAVAIL; - - return 0; - } -diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c -index 52926c8..a12dd32 100644 ---- a/net/ipv4/netfilter/ipt_CLUSTERIP.c -+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c -@@ -82,8 +82,8 @@ clusterip_config_put(struct clusterip_config *c) - static inline void - clusterip_config_entry_put(struct clusterip_config *c) - { -+ write_lock_bh(&clusterip_lock); - if (atomic_dec_and_test(&c->entries)) { -- write_lock_bh(&clusterip_lock); - list_del(&c->list); - write_unlock_bh(&clusterip_lock); - -@@ -96,7 +96,9 @@ clusterip_config_entry_put(struct clusterip_config *c) - #ifdef CONFIG_PROC_FS - remove_proc_entry(c->pde->name, c->pde->parent); - #endif -+ return; - } -+ write_unlock_bh(&clusterip_lock); - } - - static struct clusterip_config * -diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index a65935a..e08955b 100644 ---- a/net/ipv6/addrconf.c -+++ b/net/ipv6/addrconf.c -@@ -371,25 +371,26 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev) - */ - in6_dev_hold(ndev); - -+#if defined(CONFIG_IPV6_SIT) || defined(CONFIG_IPV6_SIT_MODULE) -+ if (dev->type == ARPHRD_SIT && (dev->priv_flags & IFF_ISATAP)) { -+ printk(KERN_INFO -+ "%s: Disabled Multicast RS\n", -+ dev->name); -+ ndev->cnf.rtr_solicits = 0; -+ } -+#endif -+ - #ifdef CONFIG_IPV6_PRIVACY - setup_timer(&ndev->regen_timer, ipv6_regen_rndid, (unsigned long)ndev); - if ((dev->flags&IFF_LOOPBACK) || - dev->type == ARPHRD_TUNNEL || --#if defined(CONFIG_IPV6_SIT) || defined(CONFIG_IPV6_SIT_MODULE) -+ dev->type == ARPHRD_TUNNEL6 || - dev->type == ARPHRD_SIT || --#endif - dev->type == ARPHRD_NONE) { - printk(KERN_INFO - "%s: Disabled Privacy Extensions\n", - dev->name); - ndev->cnf.use_tempaddr = -1; -- -- if (dev->type == ARPHRD_SIT && (dev->priv_flags & IFF_ISATAP)) { -- printk(KERN_INFO -- "%s: Disabled Multicast RS\n", -- dev->name); -- ndev->cnf.rtr_solicits = 0; -- } - } else { - in6_dev_hold(ndev); - ipv6_regen_rndid((unsigned long) ndev); -diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index 8897ccf..0a6fbc1 100644 ---- a/net/ipv6/raw.c -+++ b/net/ipv6/raw.c -@@ -372,8 +372,10 @@ void raw6_icmp_error(struct sk_buff *skb, int nexthdr, - read_lock(&raw_v6_hashinfo.lock); - sk = sk_head(&raw_v6_hashinfo.ht[hash]); - if (sk != NULL) { -- saddr = &ipv6_hdr(skb)->saddr; -- daddr = &ipv6_hdr(skb)->daddr; -+ struct ipv6hdr *hdr = (struct ipv6hdr *) skb->data; -+ -+ saddr = &hdr->saddr; -+ daddr = &hdr->daddr; - net = skb->dev->nd_net; - - while ((sk = __raw_v6_lookup(net, sk, nexthdr, saddr, daddr, -diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c -index c5c16b4..4d75544 100644 ---- a/net/sched/cls_u32.c -+++ b/net/sched/cls_u32.c -@@ -411,8 +411,10 @@ static void u32_destroy(struct tcf_proto *tp) - } - } - -- for (ht=tp_c->hlist; ht; ht = ht->next) -+ for (ht = tp_c->hlist; ht; ht = ht->next) { -+ ht->refcnt--; - u32_clear_hnode(tp, ht); -+ } - - while ((ht = tp_c->hlist) != NULL) { - tp_c->hlist = ht->next; -@@ -441,8 +443,12 @@ static int u32_delete(struct tcf_proto *tp, unsigned long arg) - if (tp->root == ht) - return -EINVAL; - -- if (--ht->refcnt == 0) -+ if (ht->refcnt == 1) { -+ ht->refcnt--; - u32_destroy_hnode(tp, ht); -+ } else { -+ return -EBUSY; -+ } - - return 0; - } -@@ -568,7 +574,7 @@ static int u32_change(struct tcf_proto *tp, unsigned long base, u32 handle, - if (ht == NULL) - return -ENOBUFS; - ht->tp_c = tp_c; -- ht->refcnt = 0; -+ ht->refcnt = 1; - ht->divisor = divisor; - ht->handle = handle; - ht->prio = tp->prio; -diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c -index b1e05d7..85f1495 100644 ---- a/net/sctp/ipv6.c -+++ b/net/sctp/ipv6.c -@@ -110,8 +110,9 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, - spin_lock_bh(&sctp_local_addr_lock); - list_for_each_entry_safe(addr, temp, - &sctp_local_addr_list, list) { -- if (ipv6_addr_equal(&addr->a.v6.sin6_addr, -- &ifa->addr)) { -+ if (addr->a.sa.sa_family == AF_INET6 && -+ ipv6_addr_equal(&addr->a.v6.sin6_addr, -+ &ifa->addr)) { - found = 1; - addr->valid = 0; - list_del_rcu(&addr->list); -diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c -index 1bb3c5c..c071446 100644 ---- a/net/sctp/outqueue.c -+++ b/net/sctp/outqueue.c -@@ -793,6 +793,9 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) - break; - - case SCTP_CID_ABORT: -+ if (sctp_test_T_bit(chunk)) { -+ packet->vtag = asoc->c.my_vtag; -+ } - case SCTP_CID_SACK: - case SCTP_CID_HEARTBEAT: - case SCTP_CID_HEARTBEAT_ACK: -diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c -index f90091a..c2dd65d 100644 ---- a/net/sctp/protocol.c -+++ b/net/sctp/protocol.c -@@ -647,7 +647,9 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev, - spin_lock_bh(&sctp_local_addr_lock); - list_for_each_entry_safe(addr, temp, - &sctp_local_addr_list, list) { -- if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) { -+ if (addr->a.sa.sa_family == AF_INET && -+ addr->a.v4.sin_addr.s_addr == -+ ifa->ifa_local) { - found = 1; - addr->valid = 0; - list_del_rcu(&addr->list); -diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c -index 578630e..36ebb39 100644 ---- a/net/sctp/sm_make_chunk.c -+++ b/net/sctp/sm_make_chunk.c -@@ -1982,7 +1982,10 @@ static sctp_ierror_t sctp_verify_param(const struct sctp_association *asoc, - struct sctp_chunk *chunk, - struct sctp_chunk **err_chunk) - { -+ struct sctp_hmac_algo_param *hmacs; - int retval = SCTP_IERROR_NO_ERROR; -+ __u16 n_elt, id = 0; -+ int i; - - /* FIXME - This routine is not looking at each parameter per the - * chunk type, i.e., unrecognized parameters should be further -@@ -2056,9 +2059,29 @@ static sctp_ierror_t sctp_verify_param(const struct sctp_association *asoc, - break; - - case SCTP_PARAM_HMAC_ALGO: -- if (sctp_auth_enable) -- break; -- /* Fall Through */ -+ if (!sctp_auth_enable) -+ goto fallthrough; -+ -+ hmacs = (struct sctp_hmac_algo_param *)param.p; -+ n_elt = (ntohs(param.p->length) - sizeof(sctp_paramhdr_t)) >> 1; -+ -+ /* SCTP-AUTH: Section 6.1 -+ * The HMAC algorithm based on SHA-1 MUST be supported and -+ * included in the HMAC-ALGO parameter. -+ */ -+ for (i = 0; i < n_elt; i++) { -+ id = ntohs(hmacs->hmac_ids[i]); -+ -+ if (id == SCTP_AUTH_HMAC_ID_SHA1) -+ break; -+ } -+ -+ if (id != SCTP_AUTH_HMAC_ID_SHA1) { -+ sctp_process_inv_paramlength(asoc, param.p, chunk, -+ err_chunk); -+ retval = SCTP_IERROR_ABORT; -+ } -+ break; - fallthrough: - default: - SCTP_DEBUG_PRINTK("Unrecognized param: %d for chunk %d.\n", -diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c -index 28eb38e..a4763fd 100644 ---- a/net/sctp/sm_sideeffect.c -+++ b/net/sctp/sm_sideeffect.c -@@ -1536,6 +1536,9 @@ static int sctp_cmd_interpreter(sctp_event_t event_type, - error = sctp_auth_asoc_init_active_key(asoc, - GFP_ATOMIC); - break; -+ case SCTP_CMD_UPDATE_INITTAG: -+ asoc->peer.i.init_tag = cmd->obj.u32; -+ break; - - default: - printk(KERN_WARNING "Impossible command: %u, %p\n", -diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c -index f2ed647..07194c2 100644 ---- a/net/sctp/sm_statefuns.c -+++ b/net/sctp/sm_statefuns.c -@@ -4144,6 +4144,24 @@ static sctp_disposition_t sctp_sf_abort_violation( - goto nomem; - - if (asoc) { -+ /* Treat INIT-ACK as a special case during COOKIE-WAIT. */ -+ if (chunk->chunk_hdr->type == SCTP_CID_INIT_ACK && -+ !asoc->peer.i.init_tag) { -+ sctp_initack_chunk_t *initack; -+ -+ initack = (sctp_initack_chunk_t *)chunk->chunk_hdr; -+ if (!sctp_chunk_length_valid(chunk, -+ sizeof(sctp_initack_chunk_t))) -+ abort->chunk_hdr->flags |= SCTP_CHUNK_FLAG_T; -+ else { -+ unsigned int inittag; -+ -+ inittag = ntohl(initack->init_hdr.init_tag); -+ sctp_add_cmd_sf(commands, SCTP_CMD_UPDATE_INITTAG, -+ SCTP_U32(inittag)); -+ } -+ } -+ - sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); - SCTP_INC_STATS(SCTP_MIB_OUTCTRLCHUNKS); - -@@ -4349,6 +4367,7 @@ sctp_disposition_t sctp_sf_do_prm_asoc(const struct sctp_endpoint *ep, - sctp_cmd_seq_t *commands) - { - struct sctp_chunk *repl; -+ struct sctp_association* my_asoc; - - /* The comment below says that we enter COOKIE-WAIT AFTER - * sending the INIT, but that doesn't actually work in our -@@ -4372,8 +4391,8 @@ sctp_disposition_t sctp_sf_do_prm_asoc(const struct sctp_endpoint *ep, - /* Cast away the const modifier, as we want to just - * rerun it through as a sideffect. - */ -- sctp_add_cmd_sf(commands, SCTP_CMD_NEW_ASOC, -- SCTP_ASOC((struct sctp_association *) asoc)); -+ my_asoc = (struct sctp_association *)asoc; -+ sctp_add_cmd_sf(commands, SCTP_CMD_NEW_ASOC, SCTP_ASOC(my_asoc)); - - /* Choose transport for INIT. */ - sctp_add_cmd_sf(commands, SCTP_CMD_INIT_CHOOSE_TRANSPORT, -diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index d994d82..998e63a 100644 ---- a/net/sctp/socket.c -+++ b/net/sctp/socket.c -@@ -5868,11 +5868,12 @@ SCTP_STATIC int sctp_msghdr_parse(const struct msghdr *msg, - sctp_cmsgs_t *cmsgs) - { - struct cmsghdr *cmsg; -+ struct msghdr *my_msg = (struct msghdr *)msg; - - for (cmsg = CMSG_FIRSTHDR(msg); - cmsg != NULL; -- cmsg = CMSG_NXTHDR((struct msghdr*)msg, cmsg)) { -- if (!CMSG_OK(msg, cmsg)) -+ cmsg = CMSG_NXTHDR(my_msg, cmsg)) { -+ if (!CMSG_OK(my_msg, cmsg)) - return -EINVAL; - - /* Should we parse this header or ignore? */ -diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c -index b43f1f1..ce6cda6 100644 ---- a/net/sctp/ulpevent.c -+++ b/net/sctp/ulpevent.c -@@ -859,7 +859,7 @@ __u16 sctp_ulpevent_get_notification_type(const struct sctp_ulpevent *event) - union sctp_notification *notification; - struct sk_buff *skb; - -- skb = sctp_event2skb((struct sctp_ulpevent *)event); -+ skb = sctp_event2skb(event); - notification = (union sctp_notification *) skb->data; - return notification->sn_header.sn_type; - } diff --git a/debian/patches/series/1~experimental.1 b/debian/patches/series/1~experimental.1 index 5e3c70ed0..8b61a69a1 100644 --- a/debian/patches/series/1~experimental.1 +++ b/debian/patches/series/1~experimental.1 @@ -1,4 +1,3 @@ -+ bugfix/all/patch-2.6.25-rc9-git3 + debian/version.patch + debian/kernelvariables.patch + debian/doc-build-parallel.patch