diff options
93 files changed, 510 insertions, 196 deletions
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index cc6cdb95b73a..7fb8e6dc62bf 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 | |||
| 92 | "past end of file" condition and return NULL if need be. | 92 | "past end of file" condition and return NULL if need be. |
| 93 | 93 | ||
| 94 | For more complicated applications, the private field of the seq_file | 94 | For more complicated applications, the private field of the seq_file |
| 95 | structure can be used. There is also a special value whch can be returned | 95 | structure can be used. There is also a special value which can be returned |
| 96 | by the start() function called SEQ_START_TOKEN; it can be used if you wish | 96 | by the start() function called SEQ_START_TOKEN; it can be used if you wish |
| 97 | to instruct your show() function (described below) to print a header at the | 97 | to instruct your show() function (described below) to print a header at the |
| 98 | top of the output. SEQ_START_TOKEN should only be used if the offset is | 98 | 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: | |||
| 146 | This structure will be needed to tie our iterator to the /proc file in | 146 | This structure will be needed to tie our iterator to the /proc file in |
| 147 | a little bit. | 147 | a little bit. |
| 148 | 148 | ||
| 149 | It's worth noting that the interator value returned by start() and | 149 | It's worth noting that the iterator value returned by start() and |
| 150 | manipulated by the other functions is considered to be completely opaque by | 150 | manipulated by the other functions is considered to be completely opaque by |
| 151 | the seq_file code. It can thus be anything that is useful in stepping | 151 | the seq_file code. It can thus be anything that is useful in stepping |
| 152 | through the data to be output. Counters can be useful, but it could also be | 152 | through the data to be output. Counters can be useful, but it could also be |
| @@ -262,7 +262,7 @@ routines useful: | |||
| 262 | 262 | ||
| 263 | These helpers will interpret pos as a position within the list and iterate | 263 | These helpers will interpret pos as a position within the list and iterate |
| 264 | accordingly. Your start() and next() functions need only invoke the | 264 | accordingly. Your start() and next() functions need only invoke the |
| 265 | seq_list_* helpers with a pointer to the appropriate list_head structure. | 265 | seq_list_* helpers with a pointer to the appropriate list_head structure. |
| 266 | 266 | ||
| 267 | 267 | ||
| 268 | The extra-simple version | 268 | The extra-simple version |
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index f1b2de170929..641d2afacffa 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
| @@ -281,10 +281,10 @@ solution for a couple of reasons: | |||
| 281 | sa_family_t can_family; | 281 | sa_family_t can_family; |
| 282 | int can_ifindex; | 282 | int can_ifindex; |
| 283 | union { | 283 | union { |
| 284 | struct { canid_t rx_id, tx_id; } tp16; | 284 | /* transport protocol class address info (e.g. ISOTP) */ |
| 285 | struct { canid_t rx_id, tx_id; } tp20; | 285 | struct { canid_t rx_id, tx_id; } tp; |
| 286 | struct { canid_t rx_id, tx_id; } mcnet; | 286 | |
| 287 | struct { canid_t rx_id, tx_id; } isotp; | 287 | /* reserved for future CAN protocols address information */ |
| 288 | } can_addr; | 288 | } can_addr; |
| 289 | }; | 289 | }; |
| 290 | 290 | ||
diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt index f962d01bea2a..3102b81bef88 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 | |||
| 88 | these surplus hugepages go out of use, they are freed back to the buddy | 88 | these surplus hugepages go out of use, they are freed back to the buddy |
| 89 | allocator. | 89 | allocator. |
| 90 | 90 | ||
| 91 | Caveat: Shrinking the pool via nr_hugepages while a surplus is in effect | 91 | Caveat: Shrinking the pool via nr_hugepages such that it becomes less |
| 92 | will allow the number of surplus huge pages to exceed the overcommit | 92 | than the number of hugepages in use will convert the balance to surplus |
| 93 | value, as the pool hugepages (which must have been in use for a surplus | 93 | huge pages even if it would exceed the overcommit value. As long as |
| 94 | hugepages to be allocated) will become surplus hugepages. As long as | ||
| 95 | this condition holds, however, no more surplus huge pages will be | 94 | this condition holds, however, no more surplus huge pages will be |
| 96 | allowed on the system until one of the two sysctls are increased | 95 | allowed on the system until one of the two sysctls are increased |
| 97 | sufficiently, or the surplus huge pages go out of use and are freed. | 96 | sufficiently, or the surplus huge pages go out of use and are freed. |
diff --git a/MAINTAINERS b/MAINTAINERS index 90dcbbcad91c..e46775868019 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -2116,7 +2116,7 @@ M: reinette.chatre@intel.com | |||
| 2116 | L: linux-wireless@vger.kernel.org | 2116 | L: linux-wireless@vger.kernel.org |
| 2117 | L: ipw3945-devel@lists.sourceforge.net | 2117 | L: ipw3945-devel@lists.sourceforge.net |
| 2118 | W: http://intellinuxwireless.org | 2118 | W: http://intellinuxwireless.org |
| 2119 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git | 2119 | T: git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git |
| 2120 | S: Supported | 2120 | S: Supported |
| 2121 | 2121 | ||
| 2122 | IOC3 ETHERNET DRIVER | 2122 | IOC3 ETHERNET DRIVER |
| @@ -2197,7 +2197,7 @@ S: Maintained | |||
| 2197 | ISDN SUBSYSTEM | 2197 | ISDN SUBSYSTEM |
| 2198 | P: Karsten Keil | 2198 | P: Karsten Keil |
| 2199 | M: kkeil@suse.de | 2199 | M: kkeil@suse.de |
| 2200 | L: isdn4linux@listserv.isdn4linux.de | 2200 | L: isdn4linux@listserv.isdn4linux.de (subscribers-only) |
| 2201 | W: http://www.isdn4linux.de | 2201 | W: http://www.isdn4linux.de |
| 2202 | T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git | 2202 | T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git |
| 2203 | S: Maintained | 2203 | S: Maintained |
| @@ -2205,7 +2205,7 @@ S: Maintained | |||
| 2205 | ISDN SUBSYSTEM (Eicon active card driver) | 2205 | ISDN SUBSYSTEM (Eicon active card driver) |
| 2206 | P: Armin Schindler | 2206 | P: Armin Schindler |
| 2207 | M: mac@melware.de | 2207 | M: mac@melware.de |
| 2208 | L: isdn4linux@listserv.isdn4linux.de | 2208 | L: isdn4linux@listserv.isdn4linux.de (subscribers-only) |
| 2209 | W: http://www.melware.de | 2209 | W: http://www.melware.de |
| 2210 | S: Maintained | 2210 | S: Maintained |
| 2211 | 2211 | ||
| @@ -3280,6 +3280,7 @@ L: linux-wireless@vger.kernel.org | |||
| 3280 | L: rt2400-devel@lists.sourceforge.net | 3280 | L: rt2400-devel@lists.sourceforge.net |
| 3281 | W: http://rt2x00.serialmonkey.com/ | 3281 | W: http://rt2x00.serialmonkey.com/ |
| 3282 | S: Maintained | 3282 | S: Maintained |
| 3283 | T: git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git | ||
| 3283 | F: drivers/net/wireless/rt2x00/ | 3284 | F: drivers/net/wireless/rt2x00/ |
| 3284 | 3285 | ||
| 3285 | RAMDISK RAM BLOCK DEVICE DRIVER | 3286 | RAMDISK RAM BLOCK DEVICE DRIVER |
| @@ -3342,6 +3343,13 @@ L: reiserfs-devel@vger.kernel.org | |||
| 3342 | W: http://www.namesys.com | 3343 | W: http://www.namesys.com |
| 3343 | S: Supported | 3344 | S: Supported |
| 3344 | 3345 | ||
| 3346 | RFKILL | ||
| 3347 | P: Ivo van Doorn | ||
| 3348 | M: IvDoorn@gmail.com | ||
| 3349 | L: netdev@vger.kernel.org | ||
| 3350 | S: Maintained | ||
| 3351 | F: net/rfkill | ||
| 3352 | |||
| 3345 | ROCKETPORT DRIVER | 3353 | ROCKETPORT DRIVER |
| 3346 | P: Comtrol Corp. | 3354 | P: Comtrol Corp. |
| 3347 | W: http://www.comtrol.com | 3355 | W: http://www.comtrol.com |
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 25 | 3 | SUBLEVEL = 25 |
| 4 | EXTRAVERSION = -rc9 | 4 | EXTRAVERSION = |
| 5 | NAME = Funky Weasel is Jiggy wit it | 5 | NAME = Funky Weasel is Jiggy wit it |
| 6 | 6 | ||
| 7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index c75d7089f982..28e0caf4156c 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
| @@ -10,7 +10,6 @@ config AVR32 | |||
| 10 | # With EMBEDDED=n, we get lots of stuff automatically selected | 10 | # With EMBEDDED=n, we get lots of stuff automatically selected |
| 11 | # that we usually don't need on AVR32. | 11 | # that we usually don't need on AVR32. |
| 12 | select EMBEDDED | 12 | select EMBEDDED |
| 13 | select HAVE_IDE | ||
| 14 | select HAVE_OPROFILE | 13 | select HAVE_OPROFILE |
| 15 | select HAVE_KPROBES | 14 | select HAVE_KPROBES |
| 16 | help | 15 | help |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index e282c348dcde..53d0a8ee35d7 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) | |||
| 362 | info.name = name; | 362 | info.name = name; |
| 363 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window, | 363 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window, |
| 364 | &info); | 364 | &info); |
| 365 | 365 | /* | |
| 366 | * See arch/x86/pci/acpi.c. | ||
| 367 | * The desired pci bus might already be scanned in a quirk. We | ||
| 368 | * should handle the case here, but it appears that IA64 hasn't | ||
| 369 | * such quirk. So we just ignore the case now. | ||
| 370 | */ | ||
| 366 | pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller); | 371 | pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller); |
| 367 | if (pbus) | 372 | if (pbus) |
| 368 | pcibios_setup_root_windows(pbus, controller); | 373 | pcibios_setup_root_windows(pbus, controller); |
diff --git a/arch/mips/au1000/common/platform.c b/arch/mips/au1000/common/platform.c index 841904cdef4d..39d681265297 100644 --- a/arch/mips/au1000/common/platform.c +++ b/arch/mips/au1000/common/platform.c | |||
| @@ -189,7 +189,7 @@ static struct resource au1200_lcd_resources[] = { | |||
| 189 | static struct resource au1200_ide0_resources[] = { | 189 | static struct resource au1200_ide0_resources[] = { |
| 190 | [0] = { | 190 | [0] = { |
| 191 | .start = AU1XXX_ATA_PHYS_ADDR, | 191 | .start = AU1XXX_ATA_PHYS_ADDR, |
| 192 | .end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN, | 192 | .end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN - 1, |
| 193 | .flags = IORESOURCE_MEM, | 193 | .flags = IORESOURCE_MEM, |
| 194 | }, | 194 | }, |
| 195 | [1] = { | 195 | [1] = { |
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 58fccc96d003..06213d1d6d95 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
| @@ -534,7 +534,8 @@ insert_restart_trampoline(struct pt_regs *regs) | |||
| 534 | * Flushing one cacheline is cheap. | 534 | * Flushing one cacheline is cheap. |
| 535 | * "sync" on bigger (> 4 way) boxes is not. | 535 | * "sync" on bigger (> 4 way) boxes is not. |
| 536 | */ | 536 | */ |
| 537 | flush_icache_range(regs->gr[30], regs->gr[30] + 4); | 537 | flush_user_dcache_range(regs->gr[30], regs->gr[30] + 4); |
| 538 | flush_user_icache_range(regs->gr[30], regs->gr[30] + 4); | ||
| 538 | 539 | ||
| 539 | regs->gr[31] = regs->gr[30] + 8; | 540 | regs->gr[31] = regs->gr[30] + 8; |
| 540 | /* Preserve original r28. */ | 541 | /* Preserve original r28. */ |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 0234f2831bf3..378136fb5044 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 | |||
| 219 | if (pxm >= 0) | 219 | if (pxm >= 0) |
| 220 | sd->node = pxm_to_node(pxm); | 220 | sd->node = pxm_to_node(pxm); |
| 221 | #endif | 221 | #endif |
| 222 | /* | ||
| 223 | * Maybe the desired pci bus has been already scanned. In such case | ||
| 224 | * it is unnecessary to scan the pci bus with the given domain,busnum. | ||
| 225 | */ | ||
| 226 | bus = pci_find_bus(domain, busnum); | ||
| 227 | if (bus) { | ||
| 228 | /* | ||
| 229 | * If the desired bus exits, the content of bus->sysdata will | ||
| 230 | * be replaced by sd. | ||
| 231 | */ | ||
| 232 | memcpy(bus->sysdata, sd, sizeof(*sd)); | ||
| 233 | kfree(sd); | ||
| 234 | } else | ||
| 235 | bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); | ||
| 222 | 236 | ||
| 223 | bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); | ||
| 224 | if (!bus) | 237 | if (!bus) |
| 225 | kfree(sd); | 238 | kfree(sd); |
| 226 | 239 | ||
| @@ -228,7 +241,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do | |||
| 228 | if (bus != NULL) { | 241 | if (bus != NULL) { |
| 229 | if (pxm >= 0) { | 242 | if (pxm >= 0) { |
| 230 | printk("bus %d -> pxm %d -> node %d\n", | 243 | printk("bus %d -> pxm %d -> node %d\n", |
| 231 | busnum, pxm, sd->node); | 244 | busnum, pxm, pxm_to_node(pxm)); |
| 232 | } | 245 | } |
| 233 | } | 246 | } |
| 234 | #endif | 247 | #endif |
diff --git a/block/Kconfig b/block/Kconfig index 9bda7bc80307..7db9a411649d 100644 --- a/block/Kconfig +++ b/block/Kconfig | |||
| @@ -38,7 +38,7 @@ config BLK_DEV_IO_TRACE | |||
| 38 | on a block device queue. For more information (and the user space | 38 | on a block device queue. For more information (and the user space |
| 39 | support tools needed), fetch the blktrace app from: | 39 | support tools needed), fetch the blktrace app from: |
| 40 | 40 | ||
| 41 | git://brick.kernel.dk/data/git/blktrace.git | 41 | git://git.kernel.dk/blktrace.git |
| 42 | 42 | ||
| 43 | config LSF | 43 | config LSF |
| 44 | bool "Support for Large Single Files" | 44 | bool "Support for Large Single Files" |
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 5b6760e0f957..2d1955c11833 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) | |||
| 373 | } | 373 | } |
| 374 | 374 | ||
| 375 | spin_lock_irqsave(&acpi_bus_event_lock, flags); | 375 | spin_lock_irqsave(&acpi_bus_event_lock, flags); |
| 376 | entry = | 376 | if (!list_empty(&acpi_bus_event_list)) { |
| 377 | list_entry(acpi_bus_event_list.next, struct acpi_bus_event, node); | 377 | entry = list_entry(acpi_bus_event_list.next, |
| 378 | if (entry) | 378 | struct acpi_bus_event, node); |
| 379 | list_del(&entry->node); | 379 | list_del(&entry->node); |
| 380 | } | ||
| 380 | spin_unlock_irqrestore(&acpi_bus_event_lock, flags); | 381 | spin_unlock_irqrestore(&acpi_bus_event_lock, flags); |
| 381 | 382 | ||
| 382 | if (!entry) | 383 | if (!entry) |
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 0f4bf5d72835..85c016bdfd38 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
| @@ -32,19 +32,12 @@ | |||
| 32 | #include <linux/kernel.h> | 32 | #include <linux/kernel.h> |
| 33 | #include <linux/delay.h> | 33 | #include <linux/delay.h> |
| 34 | #include <linux/platform_device.h> | 34 | #include <linux/platform_device.h> |
| 35 | |||
| 36 | #include <linux/init.h> | 35 | #include <linux/init.h> |
| 37 | #include <linux/ide.h> | 36 | #include <linux/ide.h> |
| 38 | #include <linux/sysdev.h> | 37 | #include <linux/scatterlist.h> |
| 39 | |||
| 40 | #include <linux/dma-mapping.h> | ||
| 41 | |||
| 42 | #include "ide-timing.h" | ||
| 43 | 38 | ||
| 44 | #include <asm/io.h> | ||
| 45 | #include <asm/mach-au1x00/au1xxx.h> | 39 | #include <asm/mach-au1x00/au1xxx.h> |
| 46 | #include <asm/mach-au1x00/au1xxx_dbdma.h> | 40 | #include <asm/mach-au1x00/au1xxx_dbdma.h> |
| 47 | |||
| 48 | #include <asm/mach-au1x00/au1xxx_ide.h> | 41 | #include <asm/mach-au1x00/au1xxx_ide.h> |
| 49 | 42 | ||
| 50 | #define DRV_NAME "au1200-ide" | 43 | #define DRV_NAME "au1200-ide" |
| @@ -56,6 +49,8 @@ | |||
| 56 | static _auide_hwif auide_hwif; | 49 | static _auide_hwif auide_hwif; |
| 57 | static int dbdma_init_done; | 50 | static int dbdma_init_done; |
| 58 | 51 | ||
| 52 | static int auide_ddma_init(_auide_hwif *auide); | ||
| 53 | |||
| 59 | #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) | 54 | #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) |
| 60 | 55 | ||
| 61 | void auide_insw(unsigned long port, void *addr, u32 count) | 56 | void auide_insw(unsigned long port, void *addr, u32 count) |
| @@ -591,13 +586,14 @@ static int au_ide_probe(struct device *dev) | |||
| 591 | goto out; | 586 | goto out; |
| 592 | } | 587 | } |
| 593 | 588 | ||
| 594 | if (!request_mem_region (res->start, res->end-res->start, pdev->name)) { | 589 | if (!request_mem_region(res->start, res->end - res->start + 1, |
| 590 | pdev->name)) { | ||
| 595 | pr_debug("%s: request_mem_region failed\n", DRV_NAME); | 591 | pr_debug("%s: request_mem_region failed\n", DRV_NAME); |
| 596 | ret = -EBUSY; | 592 | ret = -EBUSY; |
| 597 | goto out; | 593 | goto out; |
| 598 | } | 594 | } |
| 599 | 595 | ||
| 600 | ahwif->regbase = (u32)ioremap(res->start, res->end-res->start); | 596 | ahwif->regbase = (u32)ioremap(res->start, res->end - res->start + 1); |
| 601 | if (ahwif->regbase == 0) { | 597 | if (ahwif->regbase == 0) { |
| 602 | ret = -ENOMEM; | 598 | ret = -ENOMEM; |
| 603 | goto out; | 599 | goto out; |
| @@ -682,7 +678,7 @@ static int au_ide_remove(struct device *dev) | |||
| 682 | iounmap((void *)ahwif->regbase); | 678 | iounmap((void *)ahwif->regbase); |
| 683 | 679 | ||
| 684 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 680 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 685 | release_mem_region(res->start, res->end - res->start); | 681 | release_mem_region(res->start, res->end - res->start + 1); |
| 686 | 682 | ||
| 687 | return 0; | 683 | return 0; |
| 688 | } | 684 | } |
diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c index 1597f0cc1bf1..d8a167451fd6 100644 --- a/drivers/ide/pci/it821x.c +++ b/drivers/ide/pci/it821x.c | |||
| @@ -667,7 +667,7 @@ static int __init it821x_ide_init(void) | |||
| 667 | module_init(it821x_ide_init); | 667 | module_init(it821x_ide_init); |
| 668 | 668 | ||
| 669 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); | 669 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); |
| 670 | MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode"); | 670 | MODULE_PARM_DESC(noraid, "Force card into bypass mode"); |
| 671 | 671 | ||
| 672 | MODULE_AUTHOR("Alan Cox"); | 672 | MODULE_AUTHOR("Alan Cox"); |
| 673 | MODULE_DESCRIPTION("PCI driver module for the ITE 821x"); | 673 | MODULE_DESCRIPTION("PCI driver module for the ITE 821x"); |
diff --git a/drivers/leds/leds-ams-delta.c b/drivers/leds/leds-ams-delta.c index 9e3077463d84..c37bb0d5a0c5 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 = { | |||
| 140 | .resume = ams_delta_led_resume, | 140 | .resume = ams_delta_led_resume, |
| 141 | .driver = { | 141 | .driver = { |
| 142 | .name = "ams-delta-led", | 142 | .name = "ams-delta-led", |
| 143 | .owner = THIS_MODULE, | ||
| 143 | }, | 144 | }, |
| 144 | }; | 145 | }; |
| 145 | 146 | ||
| @@ -159,3 +160,4 @@ module_exit(ams_delta_led_exit); | |||
| 159 | MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>"); | 160 | MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>"); |
| 160 | MODULE_DESCRIPTION("Amstrad Delta LED driver"); | 161 | MODULE_DESCRIPTION("Amstrad Delta LED driver"); |
| 161 | MODULE_LICENSE("GPL"); | 162 | MODULE_LICENSE("GPL"); |
| 163 | MODULE_ALIAS("platform:ams-delta-led"); | ||
diff --git a/drivers/leds/leds-atmel-pwm.c b/drivers/leds/leds-atmel-pwm.c index af61f55571fe..28db6c1444ed 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) | |||
| 132 | return 0; | 132 | return 0; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | /* work with hotplug and coldplug */ | ||
| 136 | MODULE_ALIAS("platform:leds-atmel-pwm"); | ||
| 137 | |||
| 135 | static struct platform_driver pwmled_driver = { | 138 | static struct platform_driver pwmled_driver = { |
| 136 | .driver = { | 139 | .driver = { |
| 137 | .name = "leds-atmel-pwm", | 140 | .name = "leds-atmel-pwm", |
diff --git a/drivers/leds/leds-clevo-mail.c b/drivers/leds/leds-clevo-mail.c index 6c3d33b8e383..5750b08b601f 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 = { | |||
| 170 | .resume = clevo_mail_led_resume, | 170 | .resume = clevo_mail_led_resume, |
| 171 | .driver = { | 171 | .driver = { |
| 172 | .name = KBUILD_MODNAME, | 172 | .name = KBUILD_MODNAME, |
| 173 | .owner = THIS_MODULE, | ||
| 173 | }, | 174 | }, |
| 174 | }; | 175 | }; |
| 175 | 176 | ||
diff --git a/drivers/leds/leds-cm-x270.c b/drivers/leds/leds-cm-x270.c index 9aebef02a974..accc7eddb788 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 = { | |||
| 101 | #endif | 101 | #endif |
| 102 | .driver = { | 102 | .driver = { |
| 103 | .name = "cm-x270-led", | 103 | .name = "cm-x270-led", |
| 104 | .owner = THIS_MODULE, | ||
| 104 | }, | 105 | }, |
| 105 | }; | 106 | }; |
| 106 | 107 | ||
| @@ -120,3 +121,4 @@ module_exit(cmx270led_exit); | |||
| 120 | MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>"); | 121 | MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>"); |
| 121 | MODULE_DESCRIPTION("CM-x270 LED driver"); | 122 | MODULE_DESCRIPTION("CM-x270 LED driver"); |
| 122 | MODULE_LICENSE("GPL"); | 123 | MODULE_LICENSE("GPL"); |
| 124 | MODULE_ALIAS("platform:cm-x270-led"); | ||
diff --git a/drivers/leds/leds-cobalt-qube.c b/drivers/leds/leds-cobalt-qube.c index d2b54b53d80a..096881a11b1a 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) | |||
| 75 | return 0; | 75 | return 0; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | /* work with hotplug and coldplug */ | ||
| 79 | MODULE_ALIAS("platform:cobalt-qube-leds"); | ||
| 80 | |||
| 78 | static struct platform_driver cobalt_qube_led_driver = { | 81 | static struct platform_driver cobalt_qube_led_driver = { |
| 79 | .probe = cobalt_qube_led_probe, | 82 | .probe = cobalt_qube_led_probe, |
| 80 | .remove = __devexit_p(cobalt_qube_led_remove), | 83 | .remove = __devexit_p(cobalt_qube_led_remove), |
diff --git a/drivers/leds/leds-corgi.c b/drivers/leds/leds-corgi.c index e45f6c4b59ba..29e931f89f9c 100644 --- a/drivers/leds/leds-corgi.c +++ b/drivers/leds/leds-corgi.c | |||
| @@ -99,6 +99,7 @@ static struct platform_driver corgiled_driver = { | |||
| 99 | #endif | 99 | #endif |
| 100 | .driver = { | 100 | .driver = { |
| 101 | .name = "corgi-led", | 101 | .name = "corgi-led", |
| 102 | .owner = THIS_MODULE, | ||
| 102 | }, | 103 | }, |
| 103 | }; | 104 | }; |
| 104 | 105 | ||
| @@ -118,3 +119,4 @@ module_exit(corgiled_exit); | |||
| 118 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); | 119 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); |
| 119 | MODULE_DESCRIPTION("Corgi LED driver"); | 120 | MODULE_DESCRIPTION("Corgi LED driver"); |
| 120 | MODULE_LICENSE("GPL"); | 121 | MODULE_LICENSE("GPL"); |
| 122 | MODULE_ALIAS("platform:corgi-led"); | ||
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index 4c0b05852cb6..1aae8b332134 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c | |||
| @@ -199,3 +199,4 @@ module_exit(gpio_led_exit); | |||
| 199 | MODULE_AUTHOR("Raphael Assenat <raph@8d.com>"); | 199 | MODULE_AUTHOR("Raphael Assenat <raph@8d.com>"); |
| 200 | MODULE_DESCRIPTION("GPIO LED driver"); | 200 | MODULE_DESCRIPTION("GPIO LED driver"); |
| 201 | MODULE_LICENSE("GPL"); | 201 | MODULE_LICENSE("GPL"); |
| 202 | MODULE_ALIAS("platform:leds-gpio"); | ||
diff --git a/drivers/leds/leds-h1940.c b/drivers/leds/leds-h1940.c index 677c99325be5..6e51c9b61027 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) | |||
| 139 | static struct platform_driver h1940leds_driver = { | 139 | static struct platform_driver h1940leds_driver = { |
| 140 | .driver = { | 140 | .driver = { |
| 141 | .name = "h1940-leds", | 141 | .name = "h1940-leds", |
| 142 | .owner = THIS_MODULE, | ||
| 142 | }, | 143 | }, |
| 143 | .probe = h1940leds_probe, | 144 | .probe = h1940leds_probe, |
| 144 | .remove = h1940leds_remove, | 145 | .remove = h1940leds_remove, |
| @@ -161,3 +162,4 @@ module_exit(h1940leds_exit); | |||
| 161 | MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); | 162 | MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); |
| 162 | MODULE_DESCRIPTION("LED driver for the iPAQ H1940"); | 163 | MODULE_DESCRIPTION("LED driver for the iPAQ H1940"); |
| 163 | MODULE_LICENSE("GPL"); | 164 | MODULE_LICENSE("GPL"); |
| 165 | MODULE_ALIAS("platform:h1940-leds"); | ||
diff --git a/drivers/leds/leds-hp6xx.c b/drivers/leds/leds-hp6xx.c index 82d4ec384797..870f5a3789e8 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) | |||
| 90 | return 0; | 90 | return 0; |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | /* work with hotplug and coldplug */ | ||
| 94 | MODULE_ALIAS("platform:hp6xx-led"); | ||
| 95 | |||
| 93 | static struct platform_driver hp6xxled_driver = { | 96 | static struct platform_driver hp6xxled_driver = { |
| 94 | .probe = hp6xxled_probe, | 97 | .probe = hp6xxled_probe, |
| 95 | .remove = hp6xxled_remove, | 98 | .remove = hp6xxled_remove, |
| @@ -99,6 +102,7 @@ static struct platform_driver hp6xxled_driver = { | |||
| 99 | #endif | 102 | #endif |
| 100 | .driver = { | 103 | .driver = { |
| 101 | .name = "hp6xx-led", | 104 | .name = "hp6xx-led", |
| 105 | .owner = THIS_MODULE, | ||
| 102 | }, | 106 | }, |
| 103 | }; | 107 | }; |
| 104 | 108 | ||
diff --git a/drivers/leds/leds-s3c24xx.c b/drivers/leds/leds-s3c24xx.c index 0fd640751294..0d10e119d8f5 100644 --- a/drivers/leds/leds-s3c24xx.c +++ b/drivers/leds/leds-s3c24xx.c | |||
| @@ -160,3 +160,4 @@ module_exit(s3c24xx_led_exit); | |||
| 160 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | 160 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); |
| 161 | MODULE_DESCRIPTION("S3C24XX LED driver"); | 161 | MODULE_DESCRIPTION("S3C24XX LED driver"); |
| 162 | MODULE_LICENSE("GPL"); | 162 | MODULE_LICENSE("GPL"); |
| 163 | MODULE_ALIAS("platform:s3c24xx_led"); | ||
diff --git a/drivers/leds/leds-spitz.c b/drivers/leds/leds-spitz.c index 93e1012b17e6..87007cc362c1 100644 --- a/drivers/leds/leds-spitz.c +++ b/drivers/leds/leds-spitz.c | |||
| @@ -105,6 +105,7 @@ static struct platform_driver spitzled_driver = { | |||
| 105 | #endif | 105 | #endif |
| 106 | .driver = { | 106 | .driver = { |
| 107 | .name = "spitz-led", | 107 | .name = "spitz-led", |
| 108 | .owner = THIS_MODULE, | ||
| 108 | }, | 109 | }, |
| 109 | }; | 110 | }; |
| 110 | 111 | ||
| @@ -124,3 +125,4 @@ module_exit(spitzled_exit); | |||
| 124 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); | 125 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); |
| 125 | MODULE_DESCRIPTION("Spitz LED driver"); | 126 | MODULE_DESCRIPTION("Spitz LED driver"); |
| 126 | MODULE_LICENSE("GPL"); | 127 | MODULE_LICENSE("GPL"); |
| 128 | MODULE_ALIAS("platform:spitz-led"); | ||
diff --git a/drivers/leds/leds-tosa.c b/drivers/leds/leds-tosa.c index 9e0a188fbb0a..7ebecc41a9be 100644 --- a/drivers/leds/leds-tosa.c +++ b/drivers/leds/leds-tosa.c | |||
| @@ -109,6 +109,7 @@ static struct platform_driver tosaled_driver = { | |||
| 109 | .resume = tosaled_resume, | 109 | .resume = tosaled_resume, |
| 110 | .driver = { | 110 | .driver = { |
| 111 | .name = "tosa-led", | 111 | .name = "tosa-led", |
| 112 | .owner = THIS_MODULE, | ||
| 112 | }, | 113 | }, |
| 113 | }; | 114 | }; |
| 114 | 115 | ||
| @@ -128,3 +129,4 @@ module_exit(tosaled_exit); | |||
| 128 | MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>"); | 129 | MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>"); |
| 129 | MODULE_DESCRIPTION("Tosa LED driver"); | 130 | MODULE_DESCRIPTION("Tosa LED driver"); |
| 130 | MODULE_LICENSE("GPL"); | 131 | MODULE_LICENSE("GPL"); |
| 132 | MODULE_ALIAS("platform:tosa-led"); | ||
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c index 058ccac700d0..e171650766ce 100644 --- a/drivers/misc/atmel-ssc.c +++ b/drivers/misc/atmel-ssc.c | |||
| @@ -154,6 +154,7 @@ static struct platform_driver ssc_driver = { | |||
| 154 | .remove = __devexit_p(ssc_remove), | 154 | .remove = __devexit_p(ssc_remove), |
| 155 | .driver = { | 155 | .driver = { |
| 156 | .name = "ssc", | 156 | .name = "ssc", |
| 157 | .owner = THIS_MODULE, | ||
| 157 | }, | 158 | }, |
| 158 | }; | 159 | }; |
| 159 | 160 | ||
| @@ -172,3 +173,4 @@ module_exit(ssc_exit); | |||
| 172 | MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); | 173 | MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); |
| 173 | MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91"); | 174 | MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91"); |
| 174 | MODULE_LICENSE("GPL"); | 175 | MODULE_LICENSE("GPL"); |
| 176 | MODULE_ALIAS("platform:ssc"); | ||
diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c index f8d3b9a76cbd..0d5ce03cdff2 100644 --- a/drivers/misc/atmel_pwm.c +++ b/drivers/misc/atmel_pwm.c | |||
| @@ -407,3 +407,4 @@ module_exit(pwm_exit); | |||
| 407 | 407 | ||
| 408 | MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module"); | 408 | MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module"); |
| 409 | MODULE_LICENSE("GPL"); | 409 | MODULE_LICENSE("GPL"); |
| 410 | MODULE_ALIAS("platform:atmel_pwm"); | ||
diff --git a/drivers/misc/hdpuftrs/hdpu_cpustate.c b/drivers/misc/hdpuftrs/hdpu_cpustate.c index aa8ce7abe922..302e92418bbe 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 = { | |||
| 164 | .remove = hdpu_cpustate_remove, | 164 | .remove = hdpu_cpustate_remove, |
| 165 | .driver = { | 165 | .driver = { |
| 166 | .name = HDPU_CPUSTATE_NAME, | 166 | .name = HDPU_CPUSTATE_NAME, |
| 167 | .owner = THIS_MODULE, | ||
| 167 | }, | 168 | }, |
| 168 | }; | 169 | }; |
| 169 | 170 | ||
| @@ -248,3 +249,4 @@ module_exit(cpustate_exit); | |||
| 248 | 249 | ||
| 249 | MODULE_AUTHOR("Brian Waite"); | 250 | MODULE_AUTHOR("Brian Waite"); |
| 250 | MODULE_LICENSE("GPL"); | 251 | MODULE_LICENSE("GPL"); |
| 252 | MODULE_ALIAS("platform:" HDPU_CPUSTATE_NAME); | ||
diff --git a/drivers/misc/hdpuftrs/hdpu_nexus.c b/drivers/misc/hdpuftrs/hdpu_nexus.c index 2887b2147980..2fa36f7a6eb3 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 = { | |||
| 55 | .remove = hdpu_nexus_remove, | 55 | .remove = hdpu_nexus_remove, |
| 56 | .driver = { | 56 | .driver = { |
| 57 | .name = HDPU_NEXUS_NAME, | 57 | .name = HDPU_NEXUS_NAME, |
| 58 | .owner = THIS_MODULE, | ||
| 58 | }, | 59 | }, |
| 59 | }; | 60 | }; |
| 60 | 61 | ||
| @@ -151,3 +152,4 @@ module_exit(nexus_exit); | |||
| 151 | 152 | ||
| 152 | MODULE_AUTHOR("Brian Waite"); | 153 | MODULE_AUTHOR("Brian Waite"); |
| 153 | MODULE_LICENSE("GPL"); | 154 | MODULE_LICENSE("GPL"); |
| 155 | MODULE_ALIAS("platform:" HDPU_NEXUS_NAME); | ||
diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c index 21acecc9fe3a..a28fc2f68ce2 100644 --- a/drivers/mmc/host/at91_mci.c +++ b/drivers/mmc/host/at91_mci.c | |||
| @@ -1075,3 +1075,4 @@ module_exit(at91_mci_exit); | |||
| 1075 | MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver"); | 1075 | MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver"); |
| 1076 | MODULE_AUTHOR("Nick Randell"); | 1076 | MODULE_AUTHOR("Nick Randell"); |
| 1077 | MODULE_LICENSE("GPL"); | 1077 | MODULE_LICENSE("GPL"); |
| 1078 | MODULE_ALIAS("platform:at91_mci"); | ||
diff --git a/drivers/mmc/host/au1xmmc.c b/drivers/mmc/host/au1xmmc.c index c3926eb3bf43..cc5f7bc546af 100644 --- a/drivers/mmc/host/au1xmmc.c +++ b/drivers/mmc/host/au1xmmc.c | |||
| @@ -998,6 +998,7 @@ static struct platform_driver au1xmmc_driver = { | |||
| 998 | .resume = NULL, | 998 | .resume = NULL, |
| 999 | .driver = { | 999 | .driver = { |
| 1000 | .name = DRIVER_NAME, | 1000 | .name = DRIVER_NAME, |
| 1001 | .owner = THIS_MODULE, | ||
| 1001 | }, | 1002 | }, |
| 1002 | }; | 1003 | }; |
| 1003 | 1004 | ||
| @@ -1018,5 +1019,6 @@ module_exit(au1xmmc_exit); | |||
| 1018 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); | 1019 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); |
| 1019 | MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX"); | 1020 | MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX"); |
| 1020 | MODULE_LICENSE("GPL"); | 1021 | MODULE_LICENSE("GPL"); |
| 1022 | MODULE_ALIAS("platform:au1xxx-mmc"); | ||
| 1021 | #endif | 1023 | #endif |
| 1022 | 1024 | ||
diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c index f2070a19cfa7..95f33e87a99c 100644 --- a/drivers/mmc/host/imxmmc.c +++ b/drivers/mmc/host/imxmmc.c | |||
| @@ -1128,6 +1128,7 @@ static struct platform_driver imxmci_driver = { | |||
| 1128 | .resume = imxmci_resume, | 1128 | .resume = imxmci_resume, |
| 1129 | .driver = { | 1129 | .driver = { |
| 1130 | .name = DRIVER_NAME, | 1130 | .name = DRIVER_NAME, |
| 1131 | .owner = THIS_MODULE, | ||
| 1131 | } | 1132 | } |
| 1132 | }; | 1133 | }; |
| 1133 | 1134 | ||
| @@ -1147,3 +1148,4 @@ module_exit(imxmci_exit); | |||
| 1147 | MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver"); | 1148 | MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver"); |
| 1148 | MODULE_AUTHOR("Sascha Hauer, Pengutronix"); | 1149 | MODULE_AUTHOR("Sascha Hauer, Pengutronix"); |
| 1149 | MODULE_LICENSE("GPL"); | 1150 | MODULE_LICENSE("GPL"); |
| 1151 | MODULE_ALIAS("platform:imx-mmc"); | ||
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c index c9dfeb15b487..90c358b57d1c 100644 --- a/drivers/mmc/host/omap.c +++ b/drivers/mmc/host/omap.c | |||
| @@ -1255,6 +1255,7 @@ static struct platform_driver mmc_omap_driver = { | |||
| 1255 | .resume = mmc_omap_resume, | 1255 | .resume = mmc_omap_resume, |
| 1256 | .driver = { | 1256 | .driver = { |
| 1257 | .name = DRIVER_NAME, | 1257 | .name = DRIVER_NAME, |
| 1258 | .owner = THIS_MODULE, | ||
| 1258 | }, | 1259 | }, |
| 1259 | }; | 1260 | }; |
| 1260 | 1261 | ||
| @@ -1273,5 +1274,5 @@ module_exit(mmc_omap_exit); | |||
| 1273 | 1274 | ||
| 1274 | MODULE_DESCRIPTION("OMAP Multimedia Card driver"); | 1275 | MODULE_DESCRIPTION("OMAP Multimedia Card driver"); |
| 1275 | MODULE_LICENSE("GPL"); | 1276 | MODULE_LICENSE("GPL"); |
| 1276 | MODULE_ALIAS(DRIVER_NAME); | 1277 | MODULE_ALIAS("platform:" DRIVER_NAME); |
| 1277 | MODULE_AUTHOR("Juha Yrjölä"); | 1278 | MODULE_AUTHOR("Juha Yrjölä"); |
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c index 1ea8482037bb..65210fca37ed 100644 --- a/drivers/mmc/host/pxamci.c +++ b/drivers/mmc/host/pxamci.c | |||
| @@ -693,6 +693,7 @@ static struct platform_driver pxamci_driver = { | |||
| 693 | .resume = pxamci_resume, | 693 | .resume = pxamci_resume, |
| 694 | .driver = { | 694 | .driver = { |
| 695 | .name = DRIVER_NAME, | 695 | .name = DRIVER_NAME, |
| 696 | .owner = THIS_MODULE, | ||
| 696 | }, | 697 | }, |
| 697 | }; | 698 | }; |
| 698 | 699 | ||
| @@ -711,3 +712,4 @@ module_exit(pxamci_exit); | |||
| 711 | 712 | ||
| 712 | MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver"); | 713 | MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver"); |
| 713 | MODULE_LICENSE("GPL"); | 714 | MODULE_LICENSE("GPL"); |
| 715 | MODULE_ALIAS("platform:pxa2xx-mci"); | ||
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c index 4d5f37421874..be624a049c67 100644 --- a/drivers/mmc/host/wbsd.c +++ b/drivers/mmc/host/wbsd.c | |||
| @@ -1948,6 +1948,7 @@ static struct platform_driver wbsd_driver = { | |||
| 1948 | .resume = wbsd_platform_resume, | 1948 | .resume = wbsd_platform_resume, |
| 1949 | .driver = { | 1949 | .driver = { |
| 1950 | .name = DRIVER_NAME, | 1950 | .name = DRIVER_NAME, |
| 1951 | .owner = THIS_MODULE, | ||
| 1951 | }, | 1952 | }, |
| 1952 | }; | 1953 | }; |
| 1953 | 1954 | ||
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 25f1337cd02c..59dce6aa0865 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
| @@ -148,7 +148,7 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev, | |||
| 148 | unsigned long offset, | 148 | unsigned long offset, |
| 149 | enum dma_data_direction dir) | 149 | enum dma_data_direction dir) |
| 150 | { | 150 | { |
| 151 | dma_sync_single_range_for_device(sdev->dev, dma_base, | 151 | dma_sync_single_range_for_device(sdev->dma_dev, dma_base, |
| 152 | offset & dma_desc_align_mask, | 152 | offset & dma_desc_align_mask, |
| 153 | dma_desc_sync_size, dir); | 153 | dma_desc_sync_size, dir); |
| 154 | } | 154 | } |
| @@ -158,7 +158,7 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev, | |||
| 158 | unsigned long offset, | 158 | unsigned long offset, |
| 159 | enum dma_data_direction dir) | 159 | enum dma_data_direction dir) |
| 160 | { | 160 | { |
| 161 | dma_sync_single_range_for_cpu(sdev->dev, dma_base, | 161 | dma_sync_single_range_for_cpu(sdev->dma_dev, dma_base, |
| 162 | offset & dma_desc_align_mask, | 162 | offset & dma_desc_align_mask, |
| 163 | dma_desc_sync_size, dir); | 163 | dma_desc_sync_size, dir); |
| 164 | } | 164 | } |
| @@ -613,7 +613,7 @@ static void b44_tx(struct b44 *bp) | |||
| 613 | 613 | ||
| 614 | BUG_ON(skb == NULL); | 614 | BUG_ON(skb == NULL); |
| 615 | 615 | ||
| 616 | dma_unmap_single(bp->sdev->dev, | 616 | dma_unmap_single(bp->sdev->dma_dev, |
| 617 | rp->mapping, | 617 | rp->mapping, |
| 618 | skb->len, | 618 | skb->len, |
| 619 | DMA_TO_DEVICE); | 619 | DMA_TO_DEVICE); |
| @@ -653,7 +653,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
| 653 | if (skb == NULL) | 653 | if (skb == NULL) |
| 654 | return -ENOMEM; | 654 | return -ENOMEM; |
| 655 | 655 | ||
| 656 | mapping = dma_map_single(bp->sdev->dev, skb->data, | 656 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, |
| 657 | RX_PKT_BUF_SZ, | 657 | RX_PKT_BUF_SZ, |
| 658 | DMA_FROM_DEVICE); | 658 | DMA_FROM_DEVICE); |
| 659 | 659 | ||
| @@ -663,19 +663,19 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
| 663 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { | 663 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { |
| 664 | /* Sigh... */ | 664 | /* Sigh... */ |
| 665 | if (!dma_mapping_error(mapping)) | 665 | if (!dma_mapping_error(mapping)) |
| 666 | dma_unmap_single(bp->sdev->dev, mapping, | 666 | dma_unmap_single(bp->sdev->dma_dev, mapping, |
| 667 | RX_PKT_BUF_SZ, DMA_FROM_DEVICE); | 667 | RX_PKT_BUF_SZ, DMA_FROM_DEVICE); |
| 668 | dev_kfree_skb_any(skb); | 668 | dev_kfree_skb_any(skb); |
| 669 | skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA); | 669 | skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA); |
| 670 | if (skb == NULL) | 670 | if (skb == NULL) |
| 671 | return -ENOMEM; | 671 | return -ENOMEM; |
| 672 | mapping = dma_map_single(bp->sdev->dev, skb->data, | 672 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, |
| 673 | RX_PKT_BUF_SZ, | 673 | RX_PKT_BUF_SZ, |
| 674 | DMA_FROM_DEVICE); | 674 | DMA_FROM_DEVICE); |
| 675 | if (dma_mapping_error(mapping) || | 675 | if (dma_mapping_error(mapping) || |
| 676 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { | 676 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { |
| 677 | if (!dma_mapping_error(mapping)) | 677 | if (!dma_mapping_error(mapping)) |
| 678 | dma_unmap_single(bp->sdev->dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE); | 678 | dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE); |
| 679 | dev_kfree_skb_any(skb); | 679 | dev_kfree_skb_any(skb); |
| 680 | return -ENOMEM; | 680 | return -ENOMEM; |
| 681 | } | 681 | } |
| @@ -750,7 +750,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
| 750 | dest_idx * sizeof(dest_desc), | 750 | dest_idx * sizeof(dest_desc), |
| 751 | DMA_BIDIRECTIONAL); | 751 | DMA_BIDIRECTIONAL); |
| 752 | 752 | ||
| 753 | dma_sync_single_for_device(bp->sdev->dev, le32_to_cpu(src_desc->addr), | 753 | dma_sync_single_for_device(bp->sdev->dma_dev, le32_to_cpu(src_desc->addr), |
| 754 | RX_PKT_BUF_SZ, | 754 | RX_PKT_BUF_SZ, |
| 755 | DMA_FROM_DEVICE); | 755 | DMA_FROM_DEVICE); |
| 756 | } | 756 | } |
| @@ -772,7 +772,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
| 772 | struct rx_header *rh; | 772 | struct rx_header *rh; |
| 773 | u16 len; | 773 | u16 len; |
| 774 | 774 | ||
| 775 | dma_sync_single_for_cpu(bp->sdev->dev, map, | 775 | dma_sync_single_for_cpu(bp->sdev->dma_dev, map, |
| 776 | RX_PKT_BUF_SZ, | 776 | RX_PKT_BUF_SZ, |
| 777 | DMA_FROM_DEVICE); | 777 | DMA_FROM_DEVICE); |
| 778 | rh = (struct rx_header *) skb->data; | 778 | rh = (struct rx_header *) skb->data; |
| @@ -806,7 +806,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
| 806 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); | 806 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); |
| 807 | if (skb_size < 0) | 807 | if (skb_size < 0) |
| 808 | goto drop_it; | 808 | goto drop_it; |
| 809 | dma_unmap_single(bp->sdev->dev, map, | 809 | dma_unmap_single(bp->sdev->dma_dev, map, |
| 810 | skb_size, DMA_FROM_DEVICE); | 810 | skb_size, DMA_FROM_DEVICE); |
| 811 | /* Leave out rx_header */ | 811 | /* Leave out rx_header */ |
| 812 | skb_put(skb, len + RX_PKT_OFFSET); | 812 | skb_put(skb, len + RX_PKT_OFFSET); |
| @@ -966,24 +966,24 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 966 | goto err_out; | 966 | goto err_out; |
| 967 | } | 967 | } |
| 968 | 968 | ||
| 969 | mapping = dma_map_single(bp->sdev->dev, skb->data, len, DMA_TO_DEVICE); | 969 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE); |
| 970 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { | 970 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { |
| 971 | struct sk_buff *bounce_skb; | 971 | struct sk_buff *bounce_skb; |
| 972 | 972 | ||
| 973 | /* Chip can't handle DMA to/from >1GB, use bounce buffer */ | 973 | /* Chip can't handle DMA to/from >1GB, use bounce buffer */ |
| 974 | if (!dma_mapping_error(mapping)) | 974 | if (!dma_mapping_error(mapping)) |
| 975 | dma_unmap_single(bp->sdev->dev, mapping, len, | 975 | dma_unmap_single(bp->sdev->dma_dev, mapping, len, |
| 976 | DMA_TO_DEVICE); | 976 | DMA_TO_DEVICE); |
| 977 | 977 | ||
| 978 | bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA); | 978 | bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA); |
| 979 | if (!bounce_skb) | 979 | if (!bounce_skb) |
| 980 | goto err_out; | 980 | goto err_out; |
| 981 | 981 | ||
| 982 | mapping = dma_map_single(bp->sdev->dev, bounce_skb->data, | 982 | mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data, |
| 983 | len, DMA_TO_DEVICE); | 983 | len, DMA_TO_DEVICE); |
| 984 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { | 984 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { |
| 985 | if (!dma_mapping_error(mapping)) | 985 | if (!dma_mapping_error(mapping)) |
| 986 | dma_unmap_single(bp->sdev->dev, mapping, | 986 | dma_unmap_single(bp->sdev->dma_dev, mapping, |
| 987 | len, DMA_TO_DEVICE); | 987 | len, DMA_TO_DEVICE); |
| 988 | dev_kfree_skb_any(bounce_skb); | 988 | dev_kfree_skb_any(bounce_skb); |
| 989 | goto err_out; | 989 | goto err_out; |
| @@ -1082,7 +1082,7 @@ static void b44_free_rings(struct b44 *bp) | |||
| 1082 | 1082 | ||
| 1083 | if (rp->skb == NULL) | 1083 | if (rp->skb == NULL) |
| 1084 | continue; | 1084 | continue; |
| 1085 | dma_unmap_single(bp->sdev->dev, rp->mapping, RX_PKT_BUF_SZ, | 1085 | dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ, |
| 1086 | DMA_FROM_DEVICE); | 1086 | DMA_FROM_DEVICE); |
| 1087 | dev_kfree_skb_any(rp->skb); | 1087 | dev_kfree_skb_any(rp->skb); |
| 1088 | rp->skb = NULL; | 1088 | rp->skb = NULL; |
| @@ -1094,7 +1094,7 @@ static void b44_free_rings(struct b44 *bp) | |||
| 1094 | 1094 | ||
| 1095 | if (rp->skb == NULL) | 1095 | if (rp->skb == NULL) |
| 1096 | continue; | 1096 | continue; |
| 1097 | dma_unmap_single(bp->sdev->dev, rp->mapping, rp->skb->len, | 1097 | dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len, |
| 1098 | DMA_TO_DEVICE); | 1098 | DMA_TO_DEVICE); |
| 1099 | dev_kfree_skb_any(rp->skb); | 1099 | dev_kfree_skb_any(rp->skb); |
| 1100 | rp->skb = NULL; | 1100 | rp->skb = NULL; |
| @@ -1117,12 +1117,12 @@ static void b44_init_rings(struct b44 *bp) | |||
| 1117 | memset(bp->tx_ring, 0, B44_TX_RING_BYTES); | 1117 | memset(bp->tx_ring, 0, B44_TX_RING_BYTES); |
| 1118 | 1118 | ||
| 1119 | if (bp->flags & B44_FLAG_RX_RING_HACK) | 1119 | if (bp->flags & B44_FLAG_RX_RING_HACK) |
| 1120 | dma_sync_single_for_device(bp->sdev->dev, bp->rx_ring_dma, | 1120 | dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma, |
| 1121 | DMA_TABLE_BYTES, | 1121 | DMA_TABLE_BYTES, |
| 1122 | DMA_BIDIRECTIONAL); | 1122 | DMA_BIDIRECTIONAL); |
| 1123 | 1123 | ||
| 1124 | if (bp->flags & B44_FLAG_TX_RING_HACK) | 1124 | if (bp->flags & B44_FLAG_TX_RING_HACK) |
| 1125 | dma_sync_single_for_device(bp->sdev->dev, bp->tx_ring_dma, | 1125 | dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma, |
| 1126 | DMA_TABLE_BYTES, | 1126 | DMA_TABLE_BYTES, |
| 1127 | DMA_TO_DEVICE); | 1127 | DMA_TO_DEVICE); |
| 1128 | 1128 | ||
| @@ -1144,24 +1144,24 @@ static void b44_free_consistent(struct b44 *bp) | |||
| 1144 | bp->tx_buffers = NULL; | 1144 | bp->tx_buffers = NULL; |
| 1145 | if (bp->rx_ring) { | 1145 | if (bp->rx_ring) { |
| 1146 | if (bp->flags & B44_FLAG_RX_RING_HACK) { | 1146 | if (bp->flags & B44_FLAG_RX_RING_HACK) { |
| 1147 | dma_unmap_single(bp->sdev->dev, bp->rx_ring_dma, | 1147 | dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma, |
| 1148 | DMA_TABLE_BYTES, | 1148 | DMA_TABLE_BYTES, |
| 1149 | DMA_BIDIRECTIONAL); | 1149 | DMA_BIDIRECTIONAL); |
| 1150 | kfree(bp->rx_ring); | 1150 | kfree(bp->rx_ring); |
| 1151 | } else | 1151 | } else |
| 1152 | dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES, | 1152 | dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, |
| 1153 | bp->rx_ring, bp->rx_ring_dma); | 1153 | bp->rx_ring, bp->rx_ring_dma); |
| 1154 | bp->rx_ring = NULL; | 1154 | bp->rx_ring = NULL; |
| 1155 | bp->flags &= ~B44_FLAG_RX_RING_HACK; | 1155 | bp->flags &= ~B44_FLAG_RX_RING_HACK; |
| 1156 | } | 1156 | } |
| 1157 | if (bp->tx_ring) { | 1157 | if (bp->tx_ring) { |
| 1158 | if (bp->flags & B44_FLAG_TX_RING_HACK) { | 1158 | if (bp->flags & B44_FLAG_TX_RING_HACK) { |
| 1159 | dma_unmap_single(bp->sdev->dev, bp->tx_ring_dma, | 1159 | dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma, |
| 1160 | DMA_TABLE_BYTES, | 1160 | DMA_TABLE_BYTES, |
| 1161 | DMA_TO_DEVICE); | 1161 | DMA_TO_DEVICE); |
| 1162 | kfree(bp->tx_ring); | 1162 | kfree(bp->tx_ring); |
| 1163 | } else | 1163 | } else |
| 1164 | dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES, | 1164 | dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, |
| 1165 | bp->tx_ring, bp->tx_ring_dma); | 1165 | bp->tx_ring, bp->tx_ring_dma); |
| 1166 | bp->tx_ring = NULL; | 1166 | bp->tx_ring = NULL; |
| 1167 | bp->flags &= ~B44_FLAG_TX_RING_HACK; | 1167 | bp->flags &= ~B44_FLAG_TX_RING_HACK; |
| @@ -1187,7 +1187,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
| 1187 | goto out_err; | 1187 | goto out_err; |
| 1188 | 1188 | ||
| 1189 | size = DMA_TABLE_BYTES; | 1189 | size = DMA_TABLE_BYTES; |
| 1190 | bp->rx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->rx_ring_dma, gfp); | 1190 | bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->rx_ring_dma, gfp); |
| 1191 | if (!bp->rx_ring) { | 1191 | if (!bp->rx_ring) { |
| 1192 | /* Allocation may have failed due to pci_alloc_consistent | 1192 | /* Allocation may have failed due to pci_alloc_consistent |
| 1193 | insisting on use of GFP_DMA, which is more restrictive | 1193 | insisting on use of GFP_DMA, which is more restrictive |
| @@ -1199,7 +1199,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
| 1199 | if (!rx_ring) | 1199 | if (!rx_ring) |
| 1200 | goto out_err; | 1200 | goto out_err; |
| 1201 | 1201 | ||
| 1202 | rx_ring_dma = dma_map_single(bp->sdev->dev, rx_ring, | 1202 | rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring, |
| 1203 | DMA_TABLE_BYTES, | 1203 | DMA_TABLE_BYTES, |
| 1204 | DMA_BIDIRECTIONAL); | 1204 | DMA_BIDIRECTIONAL); |
| 1205 | 1205 | ||
| @@ -1214,7 +1214,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
| 1214 | bp->flags |= B44_FLAG_RX_RING_HACK; | 1214 | bp->flags |= B44_FLAG_RX_RING_HACK; |
| 1215 | } | 1215 | } |
| 1216 | 1216 | ||
| 1217 | bp->tx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->tx_ring_dma, gfp); | 1217 | bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->tx_ring_dma, gfp); |
| 1218 | if (!bp->tx_ring) { | 1218 | if (!bp->tx_ring) { |
| 1219 | /* Allocation may have failed due to dma_alloc_coherent | 1219 | /* Allocation may have failed due to dma_alloc_coherent |
| 1220 | insisting on use of GFP_DMA, which is more restrictive | 1220 | insisting on use of GFP_DMA, which is more restrictive |
| @@ -1226,7 +1226,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
| 1226 | if (!tx_ring) | 1226 | if (!tx_ring) |
| 1227 | goto out_err; | 1227 | goto out_err; |
| 1228 | 1228 | ||
| 1229 | tx_ring_dma = dma_map_single(bp->sdev->dev, tx_ring, | 1229 | tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring, |
| 1230 | DMA_TABLE_BYTES, | 1230 | DMA_TABLE_BYTES, |
| 1231 | DMA_TO_DEVICE); | 1231 | DMA_TO_DEVICE); |
| 1232 | 1232 | ||
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 501e451be911..665341e43055 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
| @@ -730,7 +730,7 @@ static void write_msg(struct console *con, const char *msg, unsigned int len) | |||
| 730 | 730 | ||
| 731 | static struct console netconsole = { | 731 | static struct console netconsole = { |
| 732 | .name = "netcon", | 732 | .name = "netcon", |
| 733 | .flags = CON_ENABLED | CON_PRINTBUFFER, | 733 | .flags = CON_ENABLED, |
| 734 | .write = write_msg, | 734 | .write = write_msg, |
| 735 | }; | 735 | }; |
| 736 | 736 | ||
| @@ -749,6 +749,9 @@ static int __init init_netconsole(void) | |||
| 749 | err = PTR_ERR(nt); | 749 | err = PTR_ERR(nt); |
| 750 | goto fail; | 750 | goto fail; |
| 751 | } | 751 | } |
| 752 | /* Dump existing printks when we register */ | ||
| 753 | netconsole.flags |= CON_PRINTBUFFER; | ||
| 754 | |||
| 752 | spin_lock_irqsave(&target_list_lock, flags); | 755 | spin_lock_irqsave(&target_list_lock, flags); |
| 753 | list_add(&nt->list, &target_list); | 756 | list_add(&nt->list, &target_list); |
| 754 | spin_unlock_irqrestore(&target_list_lock, flags); | 757 | spin_unlock_irqrestore(&target_list_lock, flags); |
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c index ddbc6e475e28..c16de5129a71 100644 --- a/drivers/net/ps3_gelic_wireless.c +++ b/drivers/net/ps3_gelic_wireless.c | |||
| @@ -512,13 +512,18 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
| 512 | data, len); | 512 | data, len); |
| 513 | memset(ie_info, 0, sizeof(struct ie_info)); | 513 | memset(ie_info, 0, sizeof(struct ie_info)); |
| 514 | 514 | ||
| 515 | while (0 < data_left) { | 515 | while (2 <= data_left) { |
| 516 | item_id = *pos++; | 516 | item_id = *pos++; |
| 517 | item_len = *pos++; | 517 | item_len = *pos++; |
| 518 | data_left -= 2; | ||
| 519 | |||
| 520 | if (data_left < item_len) | ||
| 521 | break; | ||
| 518 | 522 | ||
| 519 | switch (item_id) { | 523 | switch (item_id) { |
| 520 | case MFIE_TYPE_GENERIC: | 524 | case MFIE_TYPE_GENERIC: |
| 521 | if (!memcmp(pos, wpa_oui, OUI_LEN) && | 525 | if ((OUI_LEN + 1 <= item_len) && |
| 526 | !memcmp(pos, wpa_oui, OUI_LEN) && | ||
| 522 | pos[OUI_LEN] == 0x01) { | 527 | pos[OUI_LEN] == 0x01) { |
| 523 | ie_info->wpa.data = pos - 2; | 528 | ie_info->wpa.data = pos - 2; |
| 524 | ie_info->wpa.len = item_len + 2; | 529 | ie_info->wpa.len = item_len + 2; |
| @@ -535,7 +540,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
| 535 | break; | 540 | break; |
| 536 | } | 541 | } |
| 537 | pos += item_len; | 542 | pos += item_len; |
| 538 | data_left -= item_len + 2; | 543 | data_left -= item_len; |
| 539 | } | 544 | } |
| 540 | pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__, | 545 | pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__, |
| 541 | ie_info->wpa.data, ie_info->wpa.len, | 546 | ie_info->wpa.data, ie_info->wpa.len, |
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 948eb1fe916b..48e912487b16 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
| @@ -373,10 +373,10 @@ static inline | |||
| 373 | dma_addr_t dmaaddr; | 373 | dma_addr_t dmaaddr; |
| 374 | 374 | ||
| 375 | if (tx) { | 375 | if (tx) { |
| 376 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 376 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
| 377 | buf, len, DMA_TO_DEVICE); | 377 | buf, len, DMA_TO_DEVICE); |
| 378 | } else { | 378 | } else { |
| 379 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 379 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
| 380 | buf, len, DMA_FROM_DEVICE); | 380 | buf, len, DMA_FROM_DEVICE); |
| 381 | } | 381 | } |
| 382 | 382 | ||
| @@ -388,9 +388,10 @@ static inline | |||
| 388 | dma_addr_t addr, size_t len, int tx) | 388 | dma_addr_t addr, size_t len, int tx) |
| 389 | { | 389 | { |
| 390 | if (tx) { | 390 | if (tx) { |
| 391 | dma_unmap_single(ring->dev->dev->dev, addr, len, DMA_TO_DEVICE); | 391 | dma_unmap_single(ring->dev->dev->dma_dev, |
| 392 | addr, len, DMA_TO_DEVICE); | ||
| 392 | } else { | 393 | } else { |
| 393 | dma_unmap_single(ring->dev->dev->dev, | 394 | dma_unmap_single(ring->dev->dev->dma_dev, |
| 394 | addr, len, DMA_FROM_DEVICE); | 395 | addr, len, DMA_FROM_DEVICE); |
| 395 | } | 396 | } |
| 396 | } | 397 | } |
| @@ -400,7 +401,7 @@ static inline | |||
| 400 | dma_addr_t addr, size_t len) | 401 | dma_addr_t addr, size_t len) |
| 401 | { | 402 | { |
| 402 | B43_WARN_ON(ring->tx); | 403 | B43_WARN_ON(ring->tx); |
| 403 | dma_sync_single_for_cpu(ring->dev->dev->dev, | 404 | dma_sync_single_for_cpu(ring->dev->dev->dma_dev, |
| 404 | addr, len, DMA_FROM_DEVICE); | 405 | addr, len, DMA_FROM_DEVICE); |
| 405 | } | 406 | } |
| 406 | 407 | ||
| @@ -409,7 +410,7 @@ static inline | |||
| 409 | dma_addr_t addr, size_t len) | 410 | dma_addr_t addr, size_t len) |
| 410 | { | 411 | { |
| 411 | B43_WARN_ON(ring->tx); | 412 | B43_WARN_ON(ring->tx); |
| 412 | dma_sync_single_for_device(ring->dev->dev->dev, | 413 | dma_sync_single_for_device(ring->dev->dev->dma_dev, |
| 413 | addr, len, DMA_FROM_DEVICE); | 414 | addr, len, DMA_FROM_DEVICE); |
| 414 | } | 415 | } |
| 415 | 416 | ||
| @@ -425,7 +426,7 @@ static inline | |||
| 425 | 426 | ||
| 426 | static int alloc_ringmemory(struct b43_dmaring *ring) | 427 | static int alloc_ringmemory(struct b43_dmaring *ring) |
| 427 | { | 428 | { |
| 428 | struct device *dev = ring->dev->dev->dev; | 429 | struct device *dma_dev = ring->dev->dev->dma_dev; |
| 429 | gfp_t flags = GFP_KERNEL; | 430 | gfp_t flags = GFP_KERNEL; |
| 430 | 431 | ||
| 431 | /* The specs call for 4K buffers for 30- and 32-bit DMA with 4K | 432 | /* The specs call for 4K buffers for 30- and 32-bit DMA with 4K |
| @@ -439,7 +440,7 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
| 439 | */ | 440 | */ |
| 440 | if (ring->type == B43_DMA_64BIT) | 441 | if (ring->type == B43_DMA_64BIT) |
| 441 | flags |= GFP_DMA; | 442 | flags |= GFP_DMA; |
| 442 | ring->descbase = dma_alloc_coherent(dev, B43_DMA_RINGMEMSIZE, | 443 | ring->descbase = dma_alloc_coherent(dma_dev, B43_DMA_RINGMEMSIZE, |
| 443 | &(ring->dmabase), flags); | 444 | &(ring->dmabase), flags); |
| 444 | if (!ring->descbase) { | 445 | if (!ring->descbase) { |
| 445 | b43err(ring->dev->wl, "DMA ringmemory allocation failed\n"); | 446 | b43err(ring->dev->wl, "DMA ringmemory allocation failed\n"); |
| @@ -452,9 +453,9 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
| 452 | 453 | ||
| 453 | static void free_ringmemory(struct b43_dmaring *ring) | 454 | static void free_ringmemory(struct b43_dmaring *ring) |
| 454 | { | 455 | { |
| 455 | struct device *dev = ring->dev->dev->dev; | 456 | struct device *dma_dev = ring->dev->dev->dma_dev; |
| 456 | 457 | ||
| 457 | dma_free_coherent(dev, B43_DMA_RINGMEMSIZE, | 458 | dma_free_coherent(dma_dev, B43_DMA_RINGMEMSIZE, |
| 458 | ring->descbase, ring->dmabase); | 459 | ring->descbase, ring->dmabase); |
| 459 | } | 460 | } |
| 460 | 461 | ||
| @@ -854,7 +855,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
| 854 | goto err_kfree_meta; | 855 | goto err_kfree_meta; |
| 855 | 856 | ||
| 856 | /* test for ability to dma to txhdr_cache */ | 857 | /* test for ability to dma to txhdr_cache */ |
| 857 | dma_test = dma_map_single(dev->dev->dev, | 858 | dma_test = dma_map_single(dev->dev->dma_dev, |
| 858 | ring->txhdr_cache, | 859 | ring->txhdr_cache, |
| 859 | b43_txhdr_size(dev), | 860 | b43_txhdr_size(dev), |
| 860 | DMA_TO_DEVICE); | 861 | DMA_TO_DEVICE); |
| @@ -869,7 +870,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
| 869 | if (!ring->txhdr_cache) | 870 | if (!ring->txhdr_cache) |
| 870 | goto err_kfree_meta; | 871 | goto err_kfree_meta; |
| 871 | 872 | ||
| 872 | dma_test = dma_map_single(dev->dev->dev, | 873 | dma_test = dma_map_single(dev->dev->dma_dev, |
| 873 | ring->txhdr_cache, | 874 | ring->txhdr_cache, |
| 874 | b43_txhdr_size(dev), | 875 | b43_txhdr_size(dev), |
| 875 | DMA_TO_DEVICE); | 876 | DMA_TO_DEVICE); |
| @@ -883,7 +884,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
| 883 | } | 884 | } |
| 884 | } | 885 | } |
| 885 | 886 | ||
| 886 | dma_unmap_single(dev->dev->dev, | 887 | dma_unmap_single(dev->dev->dma_dev, |
| 887 | dma_test, b43_txhdr_size(dev), | 888 | dma_test, b43_txhdr_size(dev), |
| 888 | DMA_TO_DEVICE); | 889 | DMA_TO_DEVICE); |
| 889 | } | 890 | } |
diff --git a/drivers/net/wireless/b43legacy/dma.c b/drivers/net/wireless/b43legacy/dma.c index e87b427d5e43..c990f87b107a 100644 --- a/drivers/net/wireless/b43legacy/dma.c +++ b/drivers/net/wireless/b43legacy/dma.c | |||
| @@ -393,11 +393,11 @@ dma_addr_t map_descbuffer(struct b43legacy_dmaring *ring, | |||
| 393 | dma_addr_t dmaaddr; | 393 | dma_addr_t dmaaddr; |
| 394 | 394 | ||
| 395 | if (tx) | 395 | if (tx) |
| 396 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 396 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
| 397 | buf, len, | 397 | buf, len, |
| 398 | DMA_TO_DEVICE); | 398 | DMA_TO_DEVICE); |
| 399 | else | 399 | else |
| 400 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 400 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
| 401 | buf, len, | 401 | buf, len, |
| 402 | DMA_FROM_DEVICE); | 402 | DMA_FROM_DEVICE); |
| 403 | 403 | ||
| @@ -411,11 +411,11 @@ void unmap_descbuffer(struct b43legacy_dmaring *ring, | |||
| 411 | int tx) | 411 | int tx) |
| 412 | { | 412 | { |
| 413 | if (tx) | 413 | if (tx) |
| 414 | dma_unmap_single(ring->dev->dev->dev, | 414 | dma_unmap_single(ring->dev->dev->dma_dev, |
| 415 | addr, len, | 415 | addr, len, |
| 416 | DMA_TO_DEVICE); | 416 | DMA_TO_DEVICE); |
| 417 | else | 417 | else |
| 418 | dma_unmap_single(ring->dev->dev->dev, | 418 | dma_unmap_single(ring->dev->dev->dma_dev, |
| 419 | addr, len, | 419 | addr, len, |
| 420 | DMA_FROM_DEVICE); | 420 | DMA_FROM_DEVICE); |
| 421 | } | 421 | } |
| @@ -427,7 +427,7 @@ void sync_descbuffer_for_cpu(struct b43legacy_dmaring *ring, | |||
| 427 | { | 427 | { |
| 428 | B43legacy_WARN_ON(ring->tx); | 428 | B43legacy_WARN_ON(ring->tx); |
| 429 | 429 | ||
| 430 | dma_sync_single_for_cpu(ring->dev->dev->dev, | 430 | dma_sync_single_for_cpu(ring->dev->dev->dma_dev, |
| 431 | addr, len, DMA_FROM_DEVICE); | 431 | addr, len, DMA_FROM_DEVICE); |
| 432 | } | 432 | } |
| 433 | 433 | ||
| @@ -438,7 +438,7 @@ void sync_descbuffer_for_device(struct b43legacy_dmaring *ring, | |||
| 438 | { | 438 | { |
| 439 | B43legacy_WARN_ON(ring->tx); | 439 | B43legacy_WARN_ON(ring->tx); |
| 440 | 440 | ||
| 441 | dma_sync_single_for_device(ring->dev->dev->dev, | 441 | dma_sync_single_for_device(ring->dev->dev->dma_dev, |
| 442 | addr, len, DMA_FROM_DEVICE); | 442 | addr, len, DMA_FROM_DEVICE); |
| 443 | } | 443 | } |
| 444 | 444 | ||
| @@ -458,9 +458,9 @@ void free_descriptor_buffer(struct b43legacy_dmaring *ring, | |||
| 458 | 458 | ||
| 459 | static int alloc_ringmemory(struct b43legacy_dmaring *ring) | 459 | static int alloc_ringmemory(struct b43legacy_dmaring *ring) |
| 460 | { | 460 | { |
| 461 | struct device *dev = ring->dev->dev->dev; | 461 | struct device *dma_dev = ring->dev->dev->dma_dev; |
| 462 | 462 | ||
| 463 | ring->descbase = dma_alloc_coherent(dev, B43legacy_DMA_RINGMEMSIZE, | 463 | ring->descbase = dma_alloc_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE, |
| 464 | &(ring->dmabase), GFP_KERNEL); | 464 | &(ring->dmabase), GFP_KERNEL); |
| 465 | if (!ring->descbase) { | 465 | if (!ring->descbase) { |
| 466 | b43legacyerr(ring->dev->wl, "DMA ringmemory allocation" | 466 | b43legacyerr(ring->dev->wl, "DMA ringmemory allocation" |
| @@ -474,9 +474,9 @@ static int alloc_ringmemory(struct b43legacy_dmaring *ring) | |||
| 474 | 474 | ||
| 475 | static void free_ringmemory(struct b43legacy_dmaring *ring) | 475 | static void free_ringmemory(struct b43legacy_dmaring *ring) |
| 476 | { | 476 | { |
| 477 | struct device *dev = ring->dev->dev->dev; | 477 | struct device *dma_dev = ring->dev->dev->dma_dev; |
| 478 | 478 | ||
| 479 | dma_free_coherent(dev, B43legacy_DMA_RINGMEMSIZE, | 479 | dma_free_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE, |
| 480 | ring->descbase, ring->dmabase); | 480 | ring->descbase, ring->dmabase); |
| 481 | } | 481 | } |
| 482 | 482 | ||
| @@ -585,8 +585,9 @@ static int b43legacy_dmacontroller_tx_reset(struct b43legacy_wldev *dev, | |||
| 585 | 585 | ||
| 586 | /* Check if a DMA mapping address is invalid. */ | 586 | /* Check if a DMA mapping address is invalid. */ |
| 587 | static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | 587 | static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, |
| 588 | dma_addr_t addr, | 588 | dma_addr_t addr, |
| 589 | size_t buffersize) | 589 | size_t buffersize, |
| 590 | bool dma_to_device) | ||
| 590 | { | 591 | { |
| 591 | if (unlikely(dma_mapping_error(addr))) | 592 | if (unlikely(dma_mapping_error(addr))) |
| 592 | return 1; | 593 | return 1; |
| @@ -594,11 +595,11 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | |||
| 594 | switch (ring->type) { | 595 | switch (ring->type) { |
| 595 | case B43legacy_DMA_30BIT: | 596 | case B43legacy_DMA_30BIT: |
| 596 | if ((u64)addr + buffersize > (1ULL << 30)) | 597 | if ((u64)addr + buffersize > (1ULL << 30)) |
| 597 | return 1; | 598 | goto address_error; |
| 598 | break; | 599 | break; |
| 599 | case B43legacy_DMA_32BIT: | 600 | case B43legacy_DMA_32BIT: |
| 600 | if ((u64)addr + buffersize > (1ULL << 32)) | 601 | if ((u64)addr + buffersize > (1ULL << 32)) |
| 601 | return 1; | 602 | goto address_error; |
| 602 | break; | 603 | break; |
| 603 | case B43legacy_DMA_64BIT: | 604 | case B43legacy_DMA_64BIT: |
| 604 | /* Currently we can't have addresses beyond 64 bits in the kernel. */ | 605 | /* Currently we can't have addresses beyond 64 bits in the kernel. */ |
| @@ -607,6 +608,12 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | |||
| 607 | 608 | ||
| 608 | /* The address is OK. */ | 609 | /* The address is OK. */ |
| 609 | return 0; | 610 | return 0; |
| 611 | |||
| 612 | address_error: | ||
| 613 | /* We can't support this address. Unmap it again. */ | ||
| 614 | unmap_descbuffer(ring, addr, buffersize, dma_to_device); | ||
| 615 | |||
| 616 | return 1; | ||
| 610 | } | 617 | } |
| 611 | 618 | ||
| 612 | static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | 619 | static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, |
| @@ -626,7 +633,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | |||
| 626 | return -ENOMEM; | 633 | return -ENOMEM; |
| 627 | dmaaddr = map_descbuffer(ring, skb->data, | 634 | dmaaddr = map_descbuffer(ring, skb->data, |
| 628 | ring->rx_buffersize, 0); | 635 | ring->rx_buffersize, 0); |
| 629 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 636 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
| 630 | /* ugh. try to realloc in zone_dma */ | 637 | /* ugh. try to realloc in zone_dma */ |
| 631 | gfp_flags |= GFP_DMA; | 638 | gfp_flags |= GFP_DMA; |
| 632 | 639 | ||
| @@ -639,7 +646,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | |||
| 639 | ring->rx_buffersize, 0); | 646 | ring->rx_buffersize, 0); |
| 640 | } | 647 | } |
| 641 | 648 | ||
| 642 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 649 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
| 643 | dev_kfree_skb_any(skb); | 650 | dev_kfree_skb_any(skb); |
| 644 | return -EIO; | 651 | return -EIO; |
| 645 | } | 652 | } |
| @@ -886,12 +893,12 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev, | |||
| 886 | goto err_kfree_meta; | 893 | goto err_kfree_meta; |
| 887 | 894 | ||
| 888 | /* test for ability to dma to txhdr_cache */ | 895 | /* test for ability to dma to txhdr_cache */ |
| 889 | dma_test = dma_map_single(dev->dev->dev, ring->txhdr_cache, | 896 | dma_test = dma_map_single(dev->dev->dma_dev, ring->txhdr_cache, |
| 890 | sizeof(struct b43legacy_txhdr_fw3), | 897 | sizeof(struct b43legacy_txhdr_fw3), |
| 891 | DMA_TO_DEVICE); | 898 | DMA_TO_DEVICE); |
| 892 | 899 | ||
| 893 | if (b43legacy_dma_mapping_error(ring, dma_test, | 900 | if (b43legacy_dma_mapping_error(ring, dma_test, |
| 894 | sizeof(struct b43legacy_txhdr_fw3))) { | 901 | sizeof(struct b43legacy_txhdr_fw3), 1)) { |
| 895 | /* ugh realloc */ | 902 | /* ugh realloc */ |
| 896 | kfree(ring->txhdr_cache); | 903 | kfree(ring->txhdr_cache); |
| 897 | ring->txhdr_cache = kcalloc(nr_slots, | 904 | ring->txhdr_cache = kcalloc(nr_slots, |
| @@ -900,17 +907,17 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev, | |||
| 900 | if (!ring->txhdr_cache) | 907 | if (!ring->txhdr_cache) |
| 901 | goto err_kfree_meta; | 908 | goto err_kfree_meta; |
| 902 | 909 | ||
| 903 | dma_test = dma_map_single(dev->dev->dev, | 910 | dma_test = dma_map_single(dev->dev->dma_dev, |
| 904 | ring->txhdr_cache, | 911 | ring->txhdr_cache, |
| 905 | sizeof(struct b43legacy_txhdr_fw3), | 912 | sizeof(struct b43legacy_txhdr_fw3), |
| 906 | DMA_TO_DEVICE); | 913 | DMA_TO_DEVICE); |
| 907 | 914 | ||
| 908 | if (b43legacy_dma_mapping_error(ring, dma_test, | 915 | if (b43legacy_dma_mapping_error(ring, dma_test, |
| 909 | sizeof(struct b43legacy_txhdr_fw3))) | 916 | sizeof(struct b43legacy_txhdr_fw3), 1)) |
| 910 | goto err_kfree_txhdr_cache; | 917 | goto err_kfree_txhdr_cache; |
| 911 | } | 918 | } |
| 912 | 919 | ||
| 913 | dma_unmap_single(dev->dev->dev, | 920 | dma_unmap_single(dev->dev->dma_dev, |
| 914 | dma_test, sizeof(struct b43legacy_txhdr_fw3), | 921 | dma_test, sizeof(struct b43legacy_txhdr_fw3), |
| 915 | DMA_TO_DEVICE); | 922 | DMA_TO_DEVICE); |
| 916 | } | 923 | } |
| @@ -1235,7 +1242,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
| 1235 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, | 1242 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, |
| 1236 | sizeof(struct b43legacy_txhdr_fw3), 1); | 1243 | sizeof(struct b43legacy_txhdr_fw3), 1); |
| 1237 | if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr, | 1244 | if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr, |
| 1238 | sizeof(struct b43legacy_txhdr_fw3))) { | 1245 | sizeof(struct b43legacy_txhdr_fw3), 1)) { |
| 1239 | ring->current_slot = old_top_slot; | 1246 | ring->current_slot = old_top_slot; |
| 1240 | ring->used_slots = old_used_slots; | 1247 | ring->used_slots = old_used_slots; |
| 1241 | return -EIO; | 1248 | return -EIO; |
| @@ -1254,7 +1261,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
| 1254 | 1261 | ||
| 1255 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1262 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
| 1256 | /* create a bounce buffer in zone_dma on mapping failure. */ | 1263 | /* create a bounce buffer in zone_dma on mapping failure. */ |
| 1257 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1264 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
| 1258 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); | 1265 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); |
| 1259 | if (!bounce_skb) { | 1266 | if (!bounce_skb) { |
| 1260 | ring->current_slot = old_top_slot; | 1267 | ring->current_slot = old_top_slot; |
| @@ -1268,7 +1275,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
| 1268 | skb = bounce_skb; | 1275 | skb = bounce_skb; |
| 1269 | meta->skb = skb; | 1276 | meta->skb = skb; |
| 1270 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1277 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
| 1271 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1278 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
| 1272 | ring->current_slot = old_top_slot; | 1279 | ring->current_slot = old_top_slot; |
| 1273 | ring->used_slots = old_used_slots; | 1280 | ring->used_slots = old_used_slots; |
| 1274 | err = -EIO; | 1281 | err = -EIO; |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index 5f3f34e1dbfd..0f7a6e7bd96a 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
| @@ -1488,6 +1488,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev) | |||
| 1488 | } | 1488 | } |
| 1489 | if (!fw->initvals) { | 1489 | if (!fw->initvals) { |
| 1490 | switch (dev->phy.type) { | 1490 | switch (dev->phy.type) { |
| 1491 | case B43legacy_PHYTYPE_B: | ||
| 1491 | case B43legacy_PHYTYPE_G: | 1492 | case B43legacy_PHYTYPE_G: |
| 1492 | if ((rev >= 5) && (rev <= 10)) | 1493 | if ((rev >= 5) && (rev <= 10)) |
| 1493 | filename = "b0g0initvals5"; | 1494 | filename = "b0g0initvals5"; |
| @@ -1505,6 +1506,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev) | |||
| 1505 | } | 1506 | } |
| 1506 | if (!fw->initvals_band) { | 1507 | if (!fw->initvals_band) { |
| 1507 | switch (dev->phy.type) { | 1508 | switch (dev->phy.type) { |
| 1509 | case B43legacy_PHYTYPE_B: | ||
| 1508 | case B43legacy_PHYTYPE_G: | 1510 | case B43legacy_PHYTYPE_G: |
| 1509 | if ((rev >= 5) && (rev <= 10)) | 1511 | if ((rev >= 5) && (rev <= 10)) |
| 1510 | filename = "b0g0bsinitvals5"; | 1512 | filename = "b0g0bsinitvals5"; |
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index f44505994a0e..133b3f39eeb6 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c | |||
| @@ -509,6 +509,8 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev, | |||
| 509 | return -EOPNOTSUPP; | 509 | return -EOPNOTSUPP; |
| 510 | } | 510 | } |
| 511 | 511 | ||
| 512 | priv->vif = conf->vif; | ||
| 513 | |||
| 512 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 514 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
| 513 | for (i = 0; i < ETH_ALEN; i++) | 515 | for (i = 0; i < ETH_ALEN; i++) |
| 514 | rtl818x_iowrite8(priv, &priv->map->MAC[i], | 516 | rtl818x_iowrite8(priv, &priv->map->MAC[i], |
| @@ -523,6 +525,7 @@ static void rtl8187_remove_interface(struct ieee80211_hw *dev, | |||
| 523 | { | 525 | { |
| 524 | struct rtl8187_priv *priv = dev->priv; | 526 | struct rtl8187_priv *priv = dev->priv; |
| 525 | priv->mode = IEEE80211_IF_TYPE_MNTR; | 527 | priv->mode = IEEE80211_IF_TYPE_MNTR; |
| 528 | priv->vif = NULL; | ||
| 526 | } | 529 | } |
| 527 | 530 | ||
| 528 | static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | 531 | static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) |
diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c index 385e145e1acc..684968558c19 100644 --- a/drivers/pcmcia/at91_cf.c +++ b/drivers/pcmcia/at91_cf.c | |||
| @@ -419,3 +419,4 @@ module_exit(at91_cf_exit); | |||
| 419 | MODULE_DESCRIPTION("AT91 Compact Flash Driver"); | 419 | MODULE_DESCRIPTION("AT91 Compact Flash Driver"); |
| 420 | MODULE_AUTHOR("David Brownell"); | 420 | MODULE_AUTHOR("David Brownell"); |
| 421 | MODULE_LICENSE("GPL"); | 421 | MODULE_LICENSE("GPL"); |
| 422 | MODULE_ALIAS("platform:at91_cf"); | ||
diff --git a/drivers/pcmcia/omap_cf.c b/drivers/pcmcia/omap_cf.c index 2df216b00817..bb6db3a582b2 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) | |||
| 344 | static struct platform_driver omap_cf_driver = { | 344 | static struct platform_driver omap_cf_driver = { |
| 345 | .driver = { | 345 | .driver = { |
| 346 | .name = (char *) driver_name, | 346 | .name = (char *) driver_name, |
| 347 | .owner = THIS_MODULE, | ||
| 347 | }, | 348 | }, |
| 348 | .remove = __exit_p(omap_cf_remove), | 349 | .remove = __exit_p(omap_cf_remove), |
| 349 | .suspend = omap_cf_suspend, | 350 | .suspend = omap_cf_suspend, |
| @@ -368,3 +369,4 @@ module_exit(omap_cf_exit); | |||
| 368 | 369 | ||
| 369 | MODULE_DESCRIPTION("OMAP CF Driver"); | 370 | MODULE_DESCRIPTION("OMAP CF Driver"); |
| 370 | MODULE_LICENSE("GPL"); | 371 | MODULE_LICENSE("GPL"); |
| 372 | MODULE_ALIAS("platform:omap_cf"); | ||
diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c index e439044d88f2..9414163c78e7 100644 --- a/drivers/pcmcia/pxa2xx_base.c +++ b/drivers/pcmcia/pxa2xx_base.c | |||
| @@ -239,6 +239,7 @@ static struct platform_driver pxa2xx_pcmcia_driver = { | |||
| 239 | .resume = pxa2xx_drv_pcmcia_resume, | 239 | .resume = pxa2xx_drv_pcmcia_resume, |
| 240 | .driver = { | 240 | .driver = { |
| 241 | .name = "pxa2xx-pcmcia", | 241 | .name = "pxa2xx-pcmcia", |
| 242 | .owner = THIS_MODULE, | ||
| 242 | }, | 243 | }, |
| 243 | }; | 244 | }; |
| 244 | 245 | ||
| @@ -258,3 +259,4 @@ module_exit(pxa2xx_pcmcia_exit); | |||
| 258 | MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>"); | 259 | MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>"); |
| 259 | MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver"); | 260 | MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver"); |
| 260 | MODULE_LICENSE("GPL"); | 261 | MODULE_LICENSE("GPL"); |
| 262 | MODULE_ALIAS("platform:pxa2xx-pcmcia"); | ||
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index b48517021ee6..dcdc142a3441 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) | |||
| 198 | 198 | ||
| 199 | /* Writing 0xff means "don't care" or "match all". */ | 199 | /* Writing 0xff means "don't care" or "match all". */ |
| 200 | 200 | ||
| 201 | mon = t->time.tm_mon; | 201 | mon = t->time.tm_mon + 1; |
| 202 | mon = (mon < 12) ? BIN2BCD(mon) : 0xff; | 202 | mon = (mon <= 12) ? BIN2BCD(mon) : 0xff; |
| 203 | mon++; | ||
| 204 | 203 | ||
| 205 | mday = t->time.tm_mday; | 204 | mday = t->time.tm_mday; |
| 206 | mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff; | 205 | mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff; |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 430997e33fc4..55492fa095a2 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
| @@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit); | |||
| 1577 | MODULE_AUTHOR("Rick Bronson"); | 1577 | MODULE_AUTHOR("Rick Bronson"); |
| 1578 | MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); | 1578 | MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); |
| 1579 | MODULE_LICENSE("GPL"); | 1579 | MODULE_LICENSE("GPL"); |
| 1580 | MODULE_ALIAS("platform:atmel_usart"); | ||
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index 0aa345b9a38b..46bb47f37b9a 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c | |||
| @@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = { | |||
| 1243 | .resume = bfin_serial_resume, | 1243 | .resume = bfin_serial_resume, |
| 1244 | .driver = { | 1244 | .driver = { |
| 1245 | .name = "bfin-uart", | 1245 | .name = "bfin-uart", |
| 1246 | .owner = THIS_MODULE, | ||
| 1246 | }, | 1247 | }, |
| 1247 | }; | 1248 | }; |
| 1248 | 1249 | ||
| @@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analog.com>"); | |||
| 1301 | MODULE_DESCRIPTION("Blackfin generic serial port driver"); | 1302 | MODULE_DESCRIPTION("Blackfin generic serial port driver"); |
| 1302 | MODULE_LICENSE("GPL"); | 1303 | MODULE_LICENSE("GPL"); |
| 1303 | MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); | 1304 | MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); |
| 1305 | MODULE_ALIAS("platform:bfin-uart"); | ||
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 56af1f566a4c..16ba9ac7a566 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
| @@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = { | |||
| 1090 | .resume = serial_imx_resume, | 1090 | .resume = serial_imx_resume, |
| 1091 | .driver = { | 1091 | .driver = { |
| 1092 | .name = "imx-uart", | 1092 | .name = "imx-uart", |
| 1093 | .owner = THIS_MODULE, | ||
| 1093 | }, | 1094 | }, |
| 1094 | }; | 1095 | }; |
| 1095 | 1096 | ||
| @@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit); | |||
| 1124 | MODULE_AUTHOR("Sascha Hauer"); | 1125 | MODULE_AUTHOR("Sascha Hauer"); |
| 1125 | MODULE_DESCRIPTION("IMX generic serial port driver"); | 1126 | MODULE_DESCRIPTION("IMX generic serial port driver"); |
| 1126 | MODULE_LICENSE("GPL"); | 1127 | MODULE_LICENSE("GPL"); |
| 1128 | MODULE_ALIAS("platform:imx-uart"); | ||
diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c index e76fc72c9b36..7e164e0cd211 100644 --- a/drivers/serial/mcf.c +++ b/drivers/serial/mcf.c | |||
| @@ -649,5 +649,6 @@ module_exit(mcf_exit); | |||
| 649 | MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); | 649 | MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); |
| 650 | MODULE_DESCRIPTION("Freescale ColdFire UART driver"); | 650 | MODULE_DESCRIPTION("Freescale ColdFire UART driver"); |
| 651 | MODULE_LICENSE("GPL"); | 651 | MODULE_LICENSE("GPL"); |
| 652 | MODULE_ALIAS("platform:mcfuart"); | ||
| 652 | 653 | ||
| 653 | /****************************************************************************/ | 654 | /****************************************************************************/ |
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c index a638f23c6c61..d93b3578c5e2 100644 --- a/drivers/serial/mpc52xx_uart.c +++ b/drivers/serial/mpc52xx_uart.c | |||
| @@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev) | |||
| 1188 | } | 1188 | } |
| 1189 | #endif | 1189 | #endif |
| 1190 | 1190 | ||
| 1191 | /* work with hotplug and coldplug */ | ||
| 1192 | MODULE_ALIAS("platform:mpc52xx-psc"); | ||
| 1191 | 1193 | ||
| 1192 | static struct platform_driver mpc52xx_uart_platform_driver = { | 1194 | static struct platform_driver mpc52xx_uart_platform_driver = { |
| 1193 | .probe = mpc52xx_uart_probe, | 1195 | .probe = mpc52xx_uart_probe, |
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c index cb3a91967742..e8819c43f57d 100644 --- a/drivers/serial/mpsc.c +++ b/drivers/serial/mpsc.c | |||
| @@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = { | |||
| 1964 | .remove = mpsc_drv_remove, | 1964 | .remove = mpsc_drv_remove, |
| 1965 | .driver = { | 1965 | .driver = { |
| 1966 | .name = MPSC_CTLR_NAME, | 1966 | .name = MPSC_CTLR_NAME, |
| 1967 | .owner = THIS_MODULE, | ||
| 1967 | }, | 1968 | }, |
| 1968 | }; | 1969 | }; |
| 1969 | 1970 | ||
| @@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $"); | |||
| 2007 | MODULE_VERSION(MPSC_VERSION); | 2008 | MODULE_VERSION(MPSC_VERSION); |
| 2008 | MODULE_LICENSE("GPL"); | 2009 | MODULE_LICENSE("GPL"); |
| 2009 | MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); | 2010 | MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); |
| 2011 | MODULE_ALIAS("platform:" MPSC_CTLR_NAME); | ||
diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c index b56f7db45031..3123ffeac8ad 100644 --- a/drivers/serial/netx-serial.c +++ b/drivers/serial/netx-serial.c | |||
| @@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = { | |||
| 713 | 713 | ||
| 714 | .driver = { | 714 | .driver = { |
| 715 | .name = DRIVER_NAME, | 715 | .name = DRIVER_NAME, |
| 716 | .owner = THIS_MODULE, | ||
| 716 | }, | 717 | }, |
| 717 | }; | 718 | }; |
| 718 | 719 | ||
| @@ -745,3 +746,4 @@ module_exit(netx_serial_exit); | |||
| 745 | MODULE_AUTHOR("Sascha Hauer"); | 746 | MODULE_AUTHOR("Sascha Hauer"); |
| 746 | MODULE_DESCRIPTION("NetX serial port driver"); | 747 | MODULE_DESCRIPTION("NetX serial port driver"); |
| 747 | MODULE_LICENSE("GPL"); | 748 | MODULE_LICENSE("GPL"); |
| 749 | MODULE_ALIAS("platform:" DRIVER_NAME); | ||
diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c index 8d01c59e8d04..d0e5a79ea635 100644 --- a/drivers/serial/pnx8xxx_uart.c +++ b/drivers/serial/pnx8xxx_uart.c | |||
| @@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc."); | |||
| 850 | MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); | 850 | MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); |
| 851 | MODULE_LICENSE("GPL"); | 851 | MODULE_LICENSE("GPL"); |
| 852 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); | 852 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); |
| 853 | MODULE_ALIAS("platform:pnx8xxx-uart"); | ||
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index 352fcb8926a6..b4f7ffb7688d 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c | |||
| @@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = { | |||
| 833 | .resume = serial_pxa_resume, | 833 | .resume = serial_pxa_resume, |
| 834 | .driver = { | 834 | .driver = { |
| 835 | .name = "pxa2xx-uart", | 835 | .name = "pxa2xx-uart", |
| 836 | .owner = THIS_MODULE, | ||
| 836 | }, | 837 | }, |
| 837 | }; | 838 | }; |
| 838 | 839 | ||
| @@ -861,4 +862,4 @@ module_init(serial_pxa_init); | |||
| 861 | module_exit(serial_pxa_exit); | 862 | module_exit(serial_pxa_exit); |
| 862 | 863 | ||
| 863 | MODULE_LICENSE("GPL"); | 864 | MODULE_LICENSE("GPL"); |
| 864 | 865 | MODULE_ALIAS("platform:pxa2xx-uart"); | |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 45de19366030..4ffa2585429a 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
| @@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole); | |||
| 1935 | MODULE_LICENSE("GPL"); | 1935 | MODULE_LICENSE("GPL"); |
| 1936 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | 1936 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); |
| 1937 | MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); | 1937 | MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); |
| 1938 | MODULE_ALIAS("platform:s3c2400-uart"); | ||
| 1939 | MODULE_ALIAS("platform:s3c2410-uart"); | ||
| 1940 | MODULE_ALIAS("platform:s3c2412-uart"); | ||
| 1941 | MODULE_ALIAS("platform:s3c2440-uart"); | ||
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index 58a83c27e14b..67b2338913c2 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c | |||
| @@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = { | |||
| 884 | .resume = sa1100_serial_resume, | 884 | .resume = sa1100_serial_resume, |
| 885 | .driver = { | 885 | .driver = { |
| 886 | .name = "sa11x0-uart", | 886 | .name = "sa11x0-uart", |
| 887 | .owner = THIS_MODULE, | ||
| 887 | }, | 888 | }, |
| 888 | }; | 889 | }; |
| 889 | 890 | ||
| @@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd"); | |||
| 917 | MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); | 918 | MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); |
| 918 | MODULE_LICENSE("GPL"); | 919 | MODULE_LICENSE("GPL"); |
| 919 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); | 920 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); |
| 921 | MODULE_ALIAS("platform:sa11x0-uart"); | ||
diff --git a/drivers/serial/sc26xx.c b/drivers/serial/sc26xx.c index a350b6d2a181..ae2a9e2df777 100644 --- a/drivers/serial/sc26xx.c +++ b/drivers/serial/sc26xx.c | |||
| @@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = { | |||
| 732 | .remove = __devexit_p(sc26xx_driver_remove), | 732 | .remove = __devexit_p(sc26xx_driver_remove), |
| 733 | .driver = { | 733 | .driver = { |
| 734 | .name = "SC26xx", | 734 | .name = "SC26xx", |
| 735 | .owner = THIS_MODULE, | ||
| 735 | }, | 736 | }, |
| 736 | }; | 737 | }; |
| 737 | 738 | ||
| @@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer"); | |||
| 753 | MODULE_DESCRIPTION("SC681/SC2692 serial driver"); | 754 | MODULE_DESCRIPTION("SC681/SC2692 serial driver"); |
| 754 | MODULE_VERSION("1.0"); | 755 | MODULE_VERSION("1.0"); |
| 755 | MODULE_LICENSE("GPL"); | 756 | MODULE_LICENSE("GPL"); |
| 757 | MODULE_ALIAS("platform:SC26xx"); | ||
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 9d244d1644e1..eff593080d4f 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
| @@ -1552,3 +1552,4 @@ module_init(sci_init); | |||
| 1552 | module_exit(sci_exit); | 1552 | module_exit(sci_exit); |
| 1553 | 1553 | ||
| 1554 | MODULE_LICENSE("GPL"); | 1554 | MODULE_LICENSE("GPL"); |
| 1555 | MODULE_ALIAS("platform:sh-sci"); | ||
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c index 4e06ab6bcb6e..b565d5a37499 100644 --- a/drivers/serial/uartlite.c +++ b/drivers/serial/uartlite.c | |||
| @@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev) | |||
| 561 | return ulite_release(&pdev->dev); | 561 | return ulite_release(&pdev->dev); |
| 562 | } | 562 | } |
| 563 | 563 | ||
| 564 | /* work with hotplug and coldplug */ | ||
| 565 | MODULE_ALIAS("platform:uartlite"); | ||
| 566 | |||
| 564 | static struct platform_driver ulite_platform_driver = { | 567 | static struct platform_driver ulite_platform_driver = { |
| 565 | .probe = ulite_probe, | 568 | .probe = ulite_probe, |
| 566 | .remove = __devexit_p(ulite_remove), | 569 | .remove = __devexit_p(ulite_remove), |
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c index 6fd51b0022ca..98ab649c1ff9 100644 --- a/drivers/serial/vr41xx_siu.c +++ b/drivers/serial/vr41xx_siu.c | |||
| @@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void) | |||
| 960 | 960 | ||
| 961 | module_init(vr41xx_siu_init); | 961 | module_init(vr41xx_siu_init); |
| 962 | module_exit(vr41xx_siu_exit); | 962 | module_exit(vr41xx_siu_exit); |
| 963 | |||
| 964 | MODULE_LICENSE("GPL"); | ||
| 965 | MODULE_ALIAS("platform:SIU"); | ||
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c index e75103aac790..b7476b888197 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) | |||
| 192 | hw->len = t->len; | 192 | hw->len = t->len; |
| 193 | hw->count = 0; | 193 | hw->count = 0; |
| 194 | 194 | ||
| 195 | init_completion(&hw->done); | ||
| 196 | |||
| 195 | /* send the first byte */ | 197 | /* send the first byte */ |
| 196 | writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT); | 198 | writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT); |
| 199 | |||
| 197 | wait_for_completion(&hw->done); | 200 | wait_for_completion(&hw->done); |
| 198 | 201 | ||
| 199 | return hw->count; | 202 | return hw->count; |
| @@ -235,6 +238,7 @@ static irqreturn_t s3c24xx_spi_irq(int irq, void *dev) | |||
| 235 | 238 | ||
| 236 | static int __init s3c24xx_spi_probe(struct platform_device *pdev) | 239 | static int __init s3c24xx_spi_probe(struct platform_device *pdev) |
| 237 | { | 240 | { |
| 241 | struct s3c2410_spi_info *pdata; | ||
| 238 | struct s3c24xx_spi *hw; | 242 | struct s3c24xx_spi *hw; |
| 239 | struct spi_master *master; | 243 | struct spi_master *master; |
| 240 | struct resource *res; | 244 | struct resource *res; |
| @@ -251,10 +255,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
| 251 | memset(hw, 0, sizeof(struct s3c24xx_spi)); | 255 | memset(hw, 0, sizeof(struct s3c24xx_spi)); |
| 252 | 256 | ||
| 253 | hw->master = spi_master_get(master); | 257 | hw->master = spi_master_get(master); |
| 254 | hw->pdata = pdev->dev.platform_data; | 258 | hw->pdata = pdata = pdev->dev.platform_data; |
| 255 | hw->dev = &pdev->dev; | 259 | hw->dev = &pdev->dev; |
| 256 | 260 | ||
| 257 | if (hw->pdata == NULL) { | 261 | if (pdata == NULL) { |
| 258 | dev_err(&pdev->dev, "No platform data supplied\n"); | 262 | dev_err(&pdev->dev, "No platform data supplied\n"); |
| 259 | err = -ENOENT; | 263 | err = -ENOENT; |
| 260 | goto err_no_pdata; | 264 | goto err_no_pdata; |
| @@ -263,6 +267,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
| 263 | platform_set_drvdata(pdev, hw); | 267 | platform_set_drvdata(pdev, hw); |
| 264 | init_completion(&hw->done); | 268 | init_completion(&hw->done); |
| 265 | 269 | ||
| 270 | /* setup the master state. */ | ||
| 271 | |||
| 272 | master->num_chipselect = hw->pdata->num_cs; | ||
| 273 | |||
| 266 | /* setup the state for the bitbang driver */ | 274 | /* setup the state for the bitbang driver */ |
| 267 | 275 | ||
| 268 | hw->bitbang.master = hw->master; | 276 | hw->bitbang.master = hw->master; |
| @@ -330,13 +338,13 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
| 330 | 338 | ||
| 331 | /* setup any gpio we can */ | 339 | /* setup any gpio we can */ |
| 332 | 340 | ||
| 333 | if (!hw->pdata->set_cs) { | 341 | if (!pdata->set_cs) { |
| 334 | hw->set_cs = s3c24xx_spi_gpiocs; | 342 | hw->set_cs = s3c24xx_spi_gpiocs; |
| 335 | 343 | ||
| 336 | s3c2410_gpio_setpin(hw->pdata->pin_cs, 1); | 344 | s3c2410_gpio_setpin(pdata->pin_cs, 1); |
| 337 | s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT); | 345 | s3c2410_gpio_cfgpin(pdata->pin_cs, S3C2410_GPIO_OUTPUT); |
| 338 | } else | 346 | } else |
| 339 | hw->set_cs = hw->pdata->set_cs; | 347 | hw->set_cs = pdata->set_cs; |
| 340 | 348 | ||
| 341 | /* register our spi controller */ | 349 | /* register our spi controller */ |
| 342 | 350 | ||
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index 72017bf2e577..8003a9e55ac4 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c | |||
| @@ -436,15 +436,18 @@ static int ssb_devices_register(struct ssb_bus *bus) | |||
| 436 | #ifdef CONFIG_SSB_PCIHOST | 436 | #ifdef CONFIG_SSB_PCIHOST |
| 437 | sdev->irq = bus->host_pci->irq; | 437 | sdev->irq = bus->host_pci->irq; |
| 438 | dev->parent = &bus->host_pci->dev; | 438 | dev->parent = &bus->host_pci->dev; |
| 439 | sdev->dma_dev = &bus->host_pci->dev; | ||
| 439 | #endif | 440 | #endif |
| 440 | break; | 441 | break; |
| 441 | case SSB_BUSTYPE_PCMCIA: | 442 | case SSB_BUSTYPE_PCMCIA: |
| 442 | #ifdef CONFIG_SSB_PCMCIAHOST | 443 | #ifdef CONFIG_SSB_PCMCIAHOST |
| 443 | sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; | 444 | sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; |
| 444 | dev->parent = &bus->host_pcmcia->dev; | 445 | dev->parent = &bus->host_pcmcia->dev; |
| 446 | sdev->dma_dev = &bus->host_pcmcia->dev; | ||
| 445 | #endif | 447 | #endif |
| 446 | break; | 448 | break; |
| 447 | case SSB_BUSTYPE_SSB: | 449 | case SSB_BUSTYPE_SSB: |
| 450 | sdev->dma_dev = dev; | ||
| 448 | break; | 451 | break; |
| 449 | } | 452 | } |
| 450 | 453 | ||
| @@ -1018,15 +1021,14 @@ EXPORT_SYMBOL(ssb_dma_translation); | |||
| 1018 | 1021 | ||
| 1019 | int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask) | 1022 | int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask) |
| 1020 | { | 1023 | { |
| 1021 | struct device *dev = ssb_dev->dev; | 1024 | struct device *dma_dev = ssb_dev->dma_dev; |
| 1022 | 1025 | ||
| 1023 | #ifdef CONFIG_SSB_PCIHOST | 1026 | #ifdef CONFIG_SSB_PCIHOST |
| 1024 | if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI && | 1027 | if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) |
| 1025 | !dma_supported(dev, mask)) | 1028 | return dma_set_mask(dma_dev, mask); |
| 1026 | return -EIO; | ||
| 1027 | #endif | 1029 | #endif |
| 1028 | dev->coherent_dma_mask = mask; | 1030 | dma_dev->coherent_dma_mask = mask; |
| 1029 | dev->dma_mask = &dev->coherent_dma_mask; | 1031 | dma_dev->dma_mask = &dma_dev->coherent_dma_mask; |
| 1030 | 1032 | ||
| 1031 | return 0; | 1033 | return 0; |
| 1032 | } | 1034 | } |
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c index 8b86e53ccf7a..7f79bbf652d7 100644 --- a/drivers/thermal/thermal.c +++ b/drivers/thermal/thermal.c | |||
| @@ -196,6 +196,10 @@ static struct device_attribute trip_point_attrs[] = { | |||
| 196 | __ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL), | 196 | __ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL), |
| 197 | __ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL), | 197 | __ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL), |
| 198 | __ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL), | 198 | __ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL), |
| 199 | __ATTR(trip_point_10_type, 0444, trip_point_type_show, NULL), | ||
| 200 | __ATTR(trip_point_10_temp, 0444, trip_point_temp_show, NULL), | ||
| 201 | __ATTR(trip_point_11_type, 0444, trip_point_type_show, NULL), | ||
| 202 | __ATTR(trip_point_11_temp, 0444, trip_point_temp_show, NULL), | ||
| 199 | }; | 203 | }; |
| 200 | 204 | ||
| 201 | #define TRIP_POINT_ATTR_ADD(_dev, _index, result) \ | 205 | #define TRIP_POINT_ATTR_ADD(_dev, _index, result) \ |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index a396fbbdc9c2..d101025a4c63 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
| @@ -109,6 +109,22 @@ static int option_send_setup(struct usb_serial_port *port); | |||
| 109 | #define HUAWEI_PRODUCT_E600 0x1001 | 109 | #define HUAWEI_PRODUCT_E600 0x1001 |
| 110 | #define HUAWEI_PRODUCT_E220 0x1003 | 110 | #define HUAWEI_PRODUCT_E220 0x1003 |
| 111 | #define HUAWEI_PRODUCT_E220BIS 0x1004 | 111 | #define HUAWEI_PRODUCT_E220BIS 0x1004 |
| 112 | #define HUAWEI_PRODUCT_E1401 0x1401 | ||
| 113 | #define HUAWEI_PRODUCT_E1403 0x1403 | ||
| 114 | #define HUAWEI_PRODUCT_E1405 0x1405 | ||
| 115 | #define HUAWEI_PRODUCT_E1406 0x1406 | ||
| 116 | #define HUAWEI_PRODUCT_E1408 0x1408 | ||
| 117 | #define HUAWEI_PRODUCT_E1409 0x1409 | ||
| 118 | #define HUAWEI_PRODUCT_E1410 0x1410 | ||
| 119 | #define HUAWEI_PRODUCT_E1411 0x1411 | ||
| 120 | #define HUAWEI_PRODUCT_E1412 0x1412 | ||
| 121 | #define HUAWEI_PRODUCT_E1413 0x1413 | ||
| 122 | #define HUAWEI_PRODUCT_E1414 0x1414 | ||
| 123 | #define HUAWEI_PRODUCT_E1415 0x1415 | ||
| 124 | #define HUAWEI_PRODUCT_E1416 0x1416 | ||
| 125 | #define HUAWEI_PRODUCT_E1417 0x1417 | ||
| 126 | #define HUAWEI_PRODUCT_E1418 0x1418 | ||
| 127 | #define HUAWEI_PRODUCT_E1419 0x1419 | ||
| 112 | 128 | ||
| 113 | #define NOVATELWIRELESS_VENDOR_ID 0x1410 | 129 | #define NOVATELWIRELESS_VENDOR_ID 0x1410 |
| 114 | 130 | ||
| @@ -129,6 +145,7 @@ static int option_send_setup(struct usb_serial_port *port); | |||
| 129 | #define NOVATELWIRELESS_PRODUCT_EV620 0x2100 | 145 | #define NOVATELWIRELESS_PRODUCT_EV620 0x2100 |
| 130 | #define NOVATELWIRELESS_PRODUCT_ES720 0x2110 | 146 | #define NOVATELWIRELESS_PRODUCT_ES720 0x2110 |
| 131 | #define NOVATELWIRELESS_PRODUCT_E725 0x2120 | 147 | #define NOVATELWIRELESS_PRODUCT_E725 0x2120 |
| 148 | #define NOVATELWIRELESS_PRODUCT_ES620 0x2130 | ||
| 132 | #define NOVATELWIRELESS_PRODUCT_EU730 0x2400 | 149 | #define NOVATELWIRELESS_PRODUCT_EU730 0x2400 |
| 133 | #define NOVATELWIRELESS_PRODUCT_EU740 0x2410 | 150 | #define NOVATELWIRELESS_PRODUCT_EU740 0x2410 |
| 134 | #define NOVATELWIRELESS_PRODUCT_EU870D 0x2420 | 151 | #define NOVATELWIRELESS_PRODUCT_EU870D 0x2420 |
| @@ -137,6 +154,8 @@ static int option_send_setup(struct usb_serial_port *port); | |||
| 137 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 | 154 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 |
| 138 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 | 155 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 |
| 139 | 156 | ||
| 157 | #define NOVATELWIRELESS_PRODUCT_U727 0x5010 | ||
| 158 | |||
| 140 | /* FUTURE NOVATEL PRODUCTS */ | 159 | /* FUTURE NOVATEL PRODUCTS */ |
| 141 | #define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000 | 160 | #define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000 |
| 142 | #define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000 | 161 | #define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000 |
| @@ -147,6 +166,12 @@ static int option_send_setup(struct usb_serial_port *port); | |||
| 147 | #define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001 | 166 | #define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001 |
| 148 | #define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001 | 167 | #define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001 |
| 149 | 168 | ||
| 169 | /* AMOI PRODUCTS */ | ||
| 170 | #define AMOI_VENDOR_ID 0x1614 | ||
| 171 | #define AMOI_PRODUCT_H01 0x0800 | ||
| 172 | #define AMOI_PRODUCT_H01A 0x7002 | ||
| 173 | #define AMOI_PRODUCT_H02 0x0802 | ||
| 174 | |||
| 150 | #define DELL_VENDOR_ID 0x413C | 175 | #define DELL_VENDOR_ID 0x413C |
| 151 | 176 | ||
| 152 | #define KYOCERA_VENDOR_ID 0x0c88 | 177 | #define KYOCERA_VENDOR_ID 0x0c88 |
| @@ -163,8 +188,13 @@ static int option_send_setup(struct usb_serial_port *port); | |||
| 163 | #define BANDRICH_PRODUCT_C100_1 0x1002 | 188 | #define BANDRICH_PRODUCT_C100_1 0x1002 |
| 164 | #define BANDRICH_PRODUCT_C100_2 0x1003 | 189 | #define BANDRICH_PRODUCT_C100_2 0x1003 |
| 165 | 190 | ||
| 191 | #define AMOI_VENDOR_ID 0x1614 | ||
| 192 | #define AMOI_PRODUCT_9508 0x0800 | ||
| 193 | |||
| 166 | #define QUALCOMM_VENDOR_ID 0x05C6 | 194 | #define QUALCOMM_VENDOR_ID 0x05C6 |
| 167 | 195 | ||
| 196 | #define MAXON_VENDOR_ID 0x16d8 | ||
| 197 | |||
| 168 | static struct usb_device_id option_ids[] = { | 198 | static struct usb_device_id option_ids[] = { |
| 169 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, | 199 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, |
| 170 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, | 200 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, |
| @@ -204,6 +234,23 @@ static struct usb_device_id option_ids[] = { | |||
| 204 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 234 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, |
| 205 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, | 235 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, |
| 206 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, | 236 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, |
| 237 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) }, | ||
| 238 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) }, | ||
| 239 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) }, | ||
| 240 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) }, | ||
| 241 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) }, | ||
| 242 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) }, | ||
| 243 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) }, | ||
| 244 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) }, | ||
| 245 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) }, | ||
| 246 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) }, | ||
| 247 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) }, | ||
| 248 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) }, | ||
| 249 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) }, | ||
| 250 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) }, | ||
| 251 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) }, | ||
| 252 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) }, | ||
| 253 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, | ||
| 207 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ | 254 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ |
| 208 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ | 255 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ |
| 209 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */ | 256 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */ |
| @@ -216,13 +263,13 @@ static struct usb_device_id option_ids[] = { | |||
| 216 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */ | 263 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */ |
| 217 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */ | 264 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */ |
| 218 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */ | 265 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */ |
| 219 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */ | 266 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES620) }, /* Novatel Merlin ES620 SM Bus */ |
| 220 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */ | 267 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */ |
| 221 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */ | 268 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */ |
| 222 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ | 269 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ |
| 223 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ | 270 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ |
| 224 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ | 271 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ |
| 225 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x5010) }, /* Novatel U727 */ | 272 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel U727 */ |
| 226 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */ | 273 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */ |
| 227 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */ | 274 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */ |
| 228 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */ | 275 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */ |
| @@ -232,6 +279,10 @@ static struct usb_device_id option_ids[] = { | |||
| 232 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */ | 279 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */ |
| 233 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */ | 280 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */ |
| 234 | 281 | ||
| 282 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, | ||
| 283 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, | ||
| 284 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) }, | ||
| 285 | |||
| 235 | { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ | 286 | { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ |
| 236 | { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ | 287 | { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ |
| 237 | { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ | 288 | { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ |
| @@ -249,6 +300,7 @@ static struct usb_device_id option_ids[] = { | |||
| 249 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, | 300 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, |
| 250 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, | 301 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, |
| 251 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | 302 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ |
| 303 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ | ||
| 252 | { } /* Terminating entry */ | 304 | { } /* Terminating entry */ |
| 253 | }; | 305 | }; |
| 254 | MODULE_DEVICE_TABLE(usb, option_ids); | 306 | MODULE_DEVICE_TABLE(usb, option_ids); |
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 3ce98e8d7bce..2138ba8aeb69 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
| @@ -854,6 +854,7 @@ int usb_serial_probe(struct usb_interface *interface, | |||
| 854 | serial->num_interrupt_in = num_interrupt_in; | 854 | serial->num_interrupt_in = num_interrupt_in; |
| 855 | serial->num_interrupt_out = num_interrupt_out; | 855 | serial->num_interrupt_out = num_interrupt_out; |
| 856 | 856 | ||
| 857 | #if 0 | ||
| 857 | /* check that the device meets the driver's requirements */ | 858 | /* check that the device meets the driver's requirements */ |
| 858 | if ((type->num_interrupt_in != NUM_DONT_CARE && | 859 | if ((type->num_interrupt_in != NUM_DONT_CARE && |
| 859 | type->num_interrupt_in != num_interrupt_in) | 860 | type->num_interrupt_in != num_interrupt_in) |
| @@ -867,6 +868,7 @@ int usb_serial_probe(struct usb_interface *interface, | |||
| 867 | kfree(serial); | 868 | kfree(serial); |
| 868 | return -EIO; | 869 | return -EIO; |
| 869 | } | 870 | } |
| 871 | #endif | ||
| 870 | 872 | ||
| 871 | /* found all that we need */ | 873 | /* found all that we need */ |
| 872 | dev_info(&interface->dev, "%s converter detected\n", | 874 | dev_info(&interface->dev, "%s converter detected\n", |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index e5219a56947c..91252075e6e1 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
| @@ -1530,16 +1530,104 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100, | |||
| 1530 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1530 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 1531 | US_FL_IGNORE_RESIDUE ), | 1531 | US_FL_IGNORE_RESIDUE ), |
| 1532 | 1532 | ||
| 1533 | /* Reported by fangxiaozhi <fangxiaozhi60675@huawei.com> | 1533 | /* Reported by fangxiaozhi <huananhu@huawei.com> |
| 1534 | * and by linlei <linlei83@huawei.com> | 1534 | * This brings the HUAWEI data card devices into multi-port mode |
| 1535 | * Patch reworked by Johann Wilhelm <johann.wilhelm@student.tugraz.at> | ||
| 1536 | * This brings the HUAWEI E220 devices into multi-port mode | ||
| 1537 | */ | 1535 | */ |
| 1536 | UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000, | ||
| 1537 | "HUAWEI MOBILE", | ||
| 1538 | "Mass Storage", | ||
| 1539 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1540 | 0), | ||
| 1538 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, | 1541 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, |
| 1539 | "HUAWEI MOBILE", | 1542 | "HUAWEI MOBILE", |
| 1540 | "Mass Storage", | 1543 | "Mass Storage", |
| 1541 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | 1544 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, |
| 1542 | 0), | 1545 | 0), |
| 1546 | UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000, | ||
| 1547 | "HUAWEI MOBILE", | ||
| 1548 | "Mass Storage", | ||
| 1549 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1550 | 0), | ||
| 1551 | UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000, | ||
| 1552 | "HUAWEI MOBILE", | ||
| 1553 | "Mass Storage", | ||
| 1554 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1555 | 0), | ||
| 1556 | UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000, | ||
| 1557 | "HUAWEI MOBILE", | ||
| 1558 | "Mass Storage", | ||
| 1559 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1560 | 0), | ||
| 1561 | UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000, | ||
| 1562 | "HUAWEI MOBILE", | ||
| 1563 | "Mass Storage", | ||
| 1564 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1565 | 0), | ||
| 1566 | UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000, | ||
| 1567 | "HUAWEI MOBILE", | ||
| 1568 | "Mass Storage", | ||
| 1569 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1570 | 0), | ||
| 1571 | UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000, | ||
| 1572 | "HUAWEI MOBILE", | ||
| 1573 | "Mass Storage", | ||
| 1574 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1575 | 0), | ||
| 1576 | UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000, | ||
| 1577 | "HUAWEI MOBILE", | ||
| 1578 | "Mass Storage", | ||
| 1579 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1580 | 0), | ||
| 1581 | UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000, | ||
| 1582 | "HUAWEI MOBILE", | ||
| 1583 | "Mass Storage", | ||
| 1584 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1585 | 0), | ||
| 1586 | UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000, | ||
| 1587 | "HUAWEI MOBILE", | ||
| 1588 | "Mass Storage", | ||
| 1589 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1590 | 0), | ||
| 1591 | UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000, | ||
| 1592 | "HUAWEI MOBILE", | ||
| 1593 | "Mass Storage", | ||
| 1594 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1595 | 0), | ||
| 1596 | UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000, | ||
| 1597 | "HUAWEI MOBILE", | ||
| 1598 | "Mass Storage", | ||
| 1599 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1600 | 0), | ||
| 1601 | UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000, | ||
| 1602 | "HUAWEI MOBILE", | ||
| 1603 | "Mass Storage", | ||
| 1604 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1605 | 0), | ||
| 1606 | UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000, | ||
| 1607 | "HUAWEI MOBILE", | ||
| 1608 | "Mass Storage", | ||
| 1609 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1610 | 0), | ||
| 1611 | UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000, | ||
| 1612 | "HUAWEI MOBILE", | ||
| 1613 | "Mass Storage", | ||
| 1614 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1615 | 0), | ||
| 1616 | UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000, | ||
| 1617 | "HUAWEI MOBILE", | ||
| 1618 | "Mass Storage", | ||
| 1619 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1620 | 0), | ||
| 1621 | UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000, | ||
| 1622 | "HUAWEI MOBILE", | ||
| 1623 | "Mass Storage", | ||
| 1624 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1625 | 0), | ||
| 1626 | UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000, | ||
| 1627 | "HUAWEI MOBILE", | ||
| 1628 | "Mass Storage", | ||
| 1629 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
| 1630 | 0), | ||
| 1543 | 1631 | ||
| 1544 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ | 1632 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ |
| 1545 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, | 1633 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, |
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 1194f5e060ea..01072f4b3e8f 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
| @@ -1521,6 +1521,7 @@ module_init(fbmem_init); | |||
| 1521 | static void __exit | 1521 | static void __exit |
| 1522 | fbmem_exit(void) | 1522 | fbmem_exit(void) |
| 1523 | { | 1523 | { |
| 1524 | remove_proc_entry("fb", NULL); | ||
| 1524 | class_destroy(fb_class); | 1525 | class_destroy(fb_class); |
| 1525 | unregister_chrdev(FB_MAJOR, "fb"); | 1526 | unregister_chrdev(FB_MAJOR, "fb"); |
| 1526 | } | 1527 | } |
diff --git a/fs/afs/main.c b/fs/afs/main.c index 0f60f6b35769..2d3e5d4fb9f7 100644 --- a/fs/afs/main.c +++ b/fs/afs/main.c | |||
| @@ -22,7 +22,7 @@ MODULE_LICENSE("GPL"); | |||
| 22 | 22 | ||
| 23 | unsigned afs_debug; | 23 | unsigned afs_debug; |
| 24 | module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO); | 24 | module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO); |
| 25 | MODULE_PARM_DESC(afs_debug, "AFS debugging mask"); | 25 | MODULE_PARM_DESC(debug, "AFS debugging mask"); |
| 26 | 26 | ||
| 27 | static char *rootcell; | 27 | static char *rootcell; |
| 28 | 28 | ||
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c index 3e8683dbb13f..a99d46f3b26e 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c | |||
| @@ -835,7 +835,7 @@ ext2_xattr_cache_insert(struct buffer_head *bh) | |||
| 835 | struct mb_cache_entry *ce; | 835 | struct mb_cache_entry *ce; |
| 836 | int error; | 836 | int error; |
| 837 | 837 | ||
| 838 | ce = mb_cache_entry_alloc(ext2_xattr_cache); | 838 | ce = mb_cache_entry_alloc(ext2_xattr_cache, GFP_NOFS); |
| 839 | if (!ce) | 839 | if (!ce) |
| 840 | return -ENOMEM; | 840 | return -ENOMEM; |
| 841 | error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash); | 841 | 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 a6ea4d6a8bb2..42856541e9a5 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c | |||
| @@ -1126,7 +1126,7 @@ ext3_xattr_cache_insert(struct buffer_head *bh) | |||
| 1126 | struct mb_cache_entry *ce; | 1126 | struct mb_cache_entry *ce; |
| 1127 | int error; | 1127 | int error; |
| 1128 | 1128 | ||
| 1129 | ce = mb_cache_entry_alloc(ext3_xattr_cache); | 1129 | ce = mb_cache_entry_alloc(ext3_xattr_cache, GFP_NOFS); |
| 1130 | if (!ce) { | 1130 | if (!ce) { |
| 1131 | ea_bdebug(bh, "out of memory"); | 1131 | ea_bdebug(bh, "out of memory"); |
| 1132 | return; | 1132 | return; |
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index d7962139c010..e9054c1c7d93 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
| @@ -1386,7 +1386,7 @@ ext4_xattr_cache_insert(struct buffer_head *bh) | |||
| 1386 | struct mb_cache_entry *ce; | 1386 | struct mb_cache_entry *ce; |
| 1387 | int error; | 1387 | int error; |
| 1388 | 1388 | ||
| 1389 | ce = mb_cache_entry_alloc(ext4_xattr_cache); | 1389 | ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS); |
| 1390 | if (!ce) { | 1390 | if (!ce) { |
| 1391 | ea_bdebug(bh, "out of memory"); | 1391 | ea_bdebug(bh, "out of memory"); |
| 1392 | return; | 1392 | return; |
diff --git a/fs/mbcache.c b/fs/mbcache.c index eb31b73e7d69..ec88ff3d04a9 100644 --- a/fs/mbcache.c +++ b/fs/mbcache.c | |||
| @@ -399,11 +399,11 @@ mb_cache_destroy(struct mb_cache *cache) | |||
| 399 | * if no more memory was available. | 399 | * if no more memory was available. |
| 400 | */ | 400 | */ |
| 401 | struct mb_cache_entry * | 401 | struct mb_cache_entry * |
| 402 | mb_cache_entry_alloc(struct mb_cache *cache) | 402 | mb_cache_entry_alloc(struct mb_cache *cache, gfp_t gfp_flags) |
| 403 | { | 403 | { |
| 404 | struct mb_cache_entry *ce; | 404 | struct mb_cache_entry *ce; |
| 405 | 405 | ||
| 406 | ce = kmem_cache_alloc(cache->c_entry_cache, GFP_KERNEL); | 406 | ce = kmem_cache_alloc(cache->c_entry_cache, gfp_flags); |
| 407 | if (ce) { | 407 | if (ce) { |
| 408 | atomic_inc(&cache->c_entry_count); | 408 | atomic_inc(&cache->c_entry_count); |
| 409 | INIT_LIST_HEAD(&ce->e_lru_list); | 409 | 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 7ca0ed97a6d0..352d33860b63 100644 --- a/include/asm-arm/arch-s3c2410/spi.h +++ b/include/asm-arm/arch-s3c2410/spi.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | struct s3c2410_spi_info { | 16 | struct s3c2410_spi_info { |
| 17 | unsigned long pin_cs; /* simple gpio cs */ | 17 | unsigned long pin_cs; /* simple gpio cs */ |
| 18 | unsigned int num_cs; /* total chipselects */ | ||
| 18 | 19 | ||
| 19 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 20 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
| 20 | }; | 21 | }; |
diff --git a/include/asm-mips/mach-au1x00/au1xxx_ide.h b/include/asm-mips/mach-au1x00/au1xxx_ide.h index e4fe26c160ba..89655c0cdcd6 100644 --- a/include/asm-mips/mach-au1x00/au1xxx_ide.h +++ b/include/asm-mips/mach-au1x00/au1xxx_ide.h | |||
| @@ -122,24 +122,6 @@ static const struct drive_list_entry dma_black_list [] = { | |||
| 122 | }; | 122 | }; |
| 123 | #endif | 123 | #endif |
| 124 | 124 | ||
| 125 | /* function prototyping */ | ||
| 126 | u8 auide_inb(unsigned long port); | ||
| 127 | u16 auide_inw(unsigned long port); | ||
| 128 | u32 auide_inl(unsigned long port); | ||
| 129 | void auide_insw(unsigned long port, void *addr, u32 count); | ||
| 130 | void auide_insl(unsigned long port, void *addr, u32 count); | ||
| 131 | void auide_outb(u8 addr, unsigned long port); | ||
| 132 | void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port); | ||
| 133 | void auide_outw(u16 addr, unsigned long port); | ||
| 134 | void auide_outl(u32 addr, unsigned long port); | ||
| 135 | void auide_outsw(unsigned long port, void *addr, u32 count); | ||
| 136 | void auide_outsl(unsigned long port, void *addr, u32 count); | ||
| 137 | static void auide_tune_drive(ide_drive_t *drive, byte pio); | ||
| 138 | static int auide_tune_chipset(ide_drive_t *drive, u8 speed); | ||
| 139 | static int auide_ddma_init( _auide_hwif *auide ); | ||
| 140 | static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif); | ||
| 141 | int __init auide_probe(void); | ||
| 142 | |||
| 143 | /******************************************************************************* | 125 | /******************************************************************************* |
| 144 | * PIO Mode timing calculation : * | 126 | * PIO Mode timing calculation : * |
| 145 | * * | 127 | * * |
diff --git a/include/asm-mips/mach-db1x00/db1200.h b/include/asm-mips/mach-db1x00/db1200.h index a6bdac61ab49..d2e28e64932e 100644 --- a/include/asm-mips/mach-db1x00/db1200.h +++ b/include/asm-mips/mach-db1x00/db1200.h | |||
| @@ -173,8 +173,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT | 173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT |
| 174 | 174 | ||
| 175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) | 175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) |
| 176 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 176 | #define AU1XXX_ATA_REG_OFFSET (5) |
| 177 | #define AU1XXX_ATA_REG_OFFSET (5) | 177 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
| 178 | #define AU1XXX_ATA_INT DB1200_IDE_INT | 178 | #define AU1XXX_ATA_INT DB1200_IDE_INT |
| 179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
| 180 | #define AU1XXX_ATA_RQSIZE 128 | 180 | #define AU1XXX_ATA_RQSIZE 128 |
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index 72213e3d02c7..edaa489b58f1 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
| @@ -186,8 +186,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT | 186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT |
| 187 | 187 | ||
| 188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) | 188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) |
| 189 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 189 | #define AU1XXX_ATA_REG_OFFSET (5) |
| 190 | #define AU1XXX_ATA_REG_OFFSET (5) | 190 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
| 191 | #define AU1XXX_ATA_INT PB1200_IDE_INT | 191 | #define AU1XXX_ATA_INT PB1200_IDE_INT |
| 192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
| 193 | #define AU1XXX_ATA_RQSIZE 128 | 193 | #define AU1XXX_ATA_RQSIZE 128 |
diff --git a/include/asm-um/tlb.h b/include/asm-um/tlb.h index 39fc475df6c9..5240fa1c5e08 100644 --- a/include/asm-um/tlb.h +++ b/include/asm-um/tlb.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __UM_TLB_H | 1 | #ifndef __UM_TLB_H |
| 2 | #define __UM_TLB_H | 2 | #define __UM_TLB_H |
| 3 | 3 | ||
| 4 | #include <linux/pagemap.h> | ||
| 4 | #include <linux/swap.h> | 5 | #include <linux/swap.h> |
| 5 | #include <asm/percpu.h> | 6 | #include <asm/percpu.h> |
| 6 | #include <asm/pgalloc.h> | 7 | #include <asm/pgalloc.h> |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index cac4b364cd40..2b7a1187cb29 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
| @@ -91,8 +91,10 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc) | |||
| 91 | * if ref count is zero, don't allow sharing (ioc is going away, it's | 91 | * if ref count is zero, don't allow sharing (ioc is going away, it's |
| 92 | * a race). | 92 | * a race). |
| 93 | */ | 93 | */ |
| 94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) | 94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) { |
| 95 | atomic_inc(&ioc->nr_tasks); | ||
| 95 | return ioc; | 96 | return ioc; |
| 97 | } | ||
| 96 | 98 | ||
| 97 | return NULL; | 99 | return NULL; |
| 98 | } | 100 | } |
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h index 99e044b4efc6..a09b84e4fdb4 100644 --- a/include/linux/mbcache.h +++ b/include/linux/mbcache.h | |||
| @@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *); | |||
| 34 | 34 | ||
| 35 | /* Functions on cache entries */ | 35 | /* Functions on cache entries */ |
| 36 | 36 | ||
| 37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); | 37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); |
| 38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, | 38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, |
| 39 | sector_t, unsigned int[]); | 39 | sector_t, unsigned int[]); |
| 40 | void mb_cache_entry_release(struct mb_cache_entry *); | 40 | void mb_cache_entry_release(struct mb_cache_entry *); |
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index 20add65215af..db53defde5ee 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
| @@ -129,6 +129,10 @@ struct ssb_device { | |||
| 129 | const struct ssb_bus_ops *ops; | 129 | const struct ssb_bus_ops *ops; |
| 130 | 130 | ||
| 131 | struct device *dev; | 131 | struct device *dev; |
| 132 | /* Pointer to the device that has to be used for | ||
| 133 | * any DMA related operation. */ | ||
| 134 | struct device *dma_dev; | ||
| 135 | |||
| 132 | struct ssb_bus *bus; | 136 | struct ssb_bus *bus; |
| 133 | struct ssb_device_id id; | 137 | struct ssb_device_id id; |
| 134 | 138 | ||
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 818ca1cf0b6d..90c1c191ea69 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
| @@ -50,7 +50,7 @@ struct thermal_cooling_device_ops { | |||
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | #define THERMAL_TRIPS_NONE -1 | 52 | #define THERMAL_TRIPS_NONE -1 |
| 53 | #define THERMAL_MAX_TRIPS 10 | 53 | #define THERMAL_MAX_TRIPS 12 |
| 54 | #define THERMAL_NAME_LENGTH 20 | 54 | #define THERMAL_NAME_LENGTH 20 |
| 55 | struct thermal_cooling_device { | 55 | struct thermal_cooling_device { |
| 56 | int id; | 56 | int id; |
diff --git a/kernel/printk.c b/kernel/printk.c index c46a20a19a15..bdd4ea8c3f2b 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
| @@ -643,8 +643,21 @@ static int acquire_console_semaphore_for_printk(unsigned int cpu) | |||
| 643 | { | 643 | { |
| 644 | int retval = 0; | 644 | int retval = 0; |
| 645 | 645 | ||
| 646 | if (can_use_console(cpu)) | 646 | if (!try_acquire_console_sem()) { |
| 647 | retval = !try_acquire_console_sem(); | 647 | retval = 1; |
| 648 | |||
| 649 | /* | ||
| 650 | * If we can't use the console, we need to release | ||
| 651 | * the console semaphore by hand to avoid flushing | ||
| 652 | * the buffer. We need to hold the console semaphore | ||
| 653 | * in order to do this test safely. | ||
| 654 | */ | ||
| 655 | if (!can_use_console(cpu)) { | ||
| 656 | console_locked = 0; | ||
| 657 | up(&console_sem); | ||
| 658 | retval = 0; | ||
| 659 | } | ||
| 660 | } | ||
| 648 | printk_cpu = UINT_MAX; | 661 | printk_cpu = UINT_MAX; |
| 649 | spin_unlock(&logbuf_lock); | 662 | spin_unlock(&logbuf_lock); |
| 650 | return retval; | 663 | return retval; |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index f255eda693b0..beb592fe9389 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) | |||
| 423 | struct task_struct *p; | 423 | struct task_struct *p; |
| 424 | 424 | ||
| 425 | cgroup_lock(); | 425 | cgroup_lock(); |
| 426 | rcu_read_lock(); | 426 | read_lock(&tasklist_lock); |
| 427 | retry: | 427 | retry: |
| 428 | p = select_bad_process(&points, mem); | 428 | p = select_bad_process(&points, mem); |
| 429 | if (PTR_ERR(p) == -1UL) | 429 | if (PTR_ERR(p) == -1UL) |
| @@ -436,7 +436,7 @@ retry: | |||
| 436 | "Memory cgroup out of memory")) | 436 | "Memory cgroup out of memory")) |
| 437 | goto retry; | 437 | goto retry; |
| 438 | out: | 438 | out: |
| 439 | rcu_read_unlock(); | 439 | read_unlock(&tasklist_lock); |
| 440 | cgroup_unlock(); | 440 | cgroup_unlock(); |
| 441 | } | 441 | } |
| 442 | #endif | 442 | #endif |
diff --git a/mm/sparse.c b/mm/sparse.c index f6a43c09c322..98d6b39c3472 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
| @@ -149,8 +149,18 @@ static inline int sparse_early_nid(struct mem_section *section) | |||
| 149 | /* Record a memory area against a node. */ | 149 | /* Record a memory area against a node. */ |
| 150 | void __init memory_present(int nid, unsigned long start, unsigned long end) | 150 | void __init memory_present(int nid, unsigned long start, unsigned long end) |
| 151 | { | 151 | { |
| 152 | unsigned long max_arch_pfn = 1UL << (MAX_PHYSMEM_BITS-PAGE_SHIFT); | ||
| 152 | unsigned long pfn; | 153 | unsigned long pfn; |
| 153 | 154 | ||
| 155 | /* | ||
| 156 | * Sanity checks - do not allow an architecture to pass | ||
| 157 | * in larger pfns than the maximum scope of sparsemem: | ||
| 158 | */ | ||
| 159 | if (start >= max_arch_pfn) | ||
| 160 | return; | ||
| 161 | if (end >= max_arch_pfn) | ||
| 162 | end = max_arch_pfn; | ||
| 163 | |||
| 154 | start &= PAGE_SECTION_MASK; | 164 | start &= PAGE_SECTION_MASK; |
| 155 | for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { | 165 | for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { |
| 156 | unsigned long section = pfn_to_section_nr(pfn); | 166 | unsigned long section = pfn_to_section_nr(pfn); |
diff --git a/mm/vmstat.c b/mm/vmstat.c index 422d960ffcd8..7c7286e9506d 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c | |||
| @@ -388,6 +388,7 @@ static char * const migratetype_names[MIGRATE_TYPES] = { | |||
| 388 | "Reclaimable", | 388 | "Reclaimable", |
| 389 | "Movable", | 389 | "Movable", |
| 390 | "Reserve", | 390 | "Reserve", |
| 391 | "Isolate", | ||
| 391 | }; | 392 | }; |
| 392 | 393 | ||
| 393 | static void *frag_start(struct seq_file *m, loff_t *pos) | 394 | static void *frag_start(struct seq_file *m, loff_t *pos) |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 5119856017ab..bbb7d88a16b4 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -3841,8 +3841,28 @@ static void tcp_ofo_queue(struct sock *sk) | |||
| 3841 | } | 3841 | } |
| 3842 | } | 3842 | } |
| 3843 | 3843 | ||
| 3844 | static int tcp_prune_ofo_queue(struct sock *sk); | ||
| 3844 | static int tcp_prune_queue(struct sock *sk); | 3845 | static int tcp_prune_queue(struct sock *sk); |
| 3845 | 3846 | ||
| 3847 | static inline int tcp_try_rmem_schedule(struct sock *sk, unsigned int size) | ||
| 3848 | { | ||
| 3849 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | ||
| 3850 | !sk_rmem_schedule(sk, size)) { | ||
| 3851 | |||
| 3852 | if (tcp_prune_queue(sk) < 0) | ||
| 3853 | return -1; | ||
| 3854 | |||
| 3855 | if (!sk_rmem_schedule(sk, size)) { | ||
| 3856 | if (!tcp_prune_ofo_queue(sk)) | ||
| 3857 | return -1; | ||
| 3858 | |||
| 3859 | if (!sk_rmem_schedule(sk, size)) | ||
| 3860 | return -1; | ||
| 3861 | } | ||
| 3862 | } | ||
| 3863 | return 0; | ||
| 3864 | } | ||
| 3865 | |||
| 3846 | static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | 3866 | static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) |
| 3847 | { | 3867 | { |
| 3848 | struct tcphdr *th = tcp_hdr(skb); | 3868 | struct tcphdr *th = tcp_hdr(skb); |
| @@ -3892,12 +3912,9 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | |||
| 3892 | if (eaten <= 0) { | 3912 | if (eaten <= 0) { |
| 3893 | queue_and_out: | 3913 | queue_and_out: |
| 3894 | if (eaten < 0 && | 3914 | if (eaten < 0 && |
| 3895 | (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | 3915 | tcp_try_rmem_schedule(sk, skb->truesize)) |
| 3896 | !sk_rmem_schedule(sk, skb->truesize))) { | 3916 | goto drop; |
| 3897 | if (tcp_prune_queue(sk) < 0 || | 3917 | |
| 3898 | !sk_rmem_schedule(sk, skb->truesize)) | ||
| 3899 | goto drop; | ||
| 3900 | } | ||
| 3901 | skb_set_owner_r(skb, sk); | 3918 | skb_set_owner_r(skb, sk); |
| 3902 | __skb_queue_tail(&sk->sk_receive_queue, skb); | 3919 | __skb_queue_tail(&sk->sk_receive_queue, skb); |
| 3903 | } | 3920 | } |
| @@ -3966,12 +3983,8 @@ drop: | |||
| 3966 | 3983 | ||
| 3967 | TCP_ECN_check_ce(tp, skb); | 3984 | TCP_ECN_check_ce(tp, skb); |
| 3968 | 3985 | ||
| 3969 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | 3986 | if (tcp_try_rmem_schedule(sk, skb->truesize)) |
| 3970 | !sk_rmem_schedule(sk, skb->truesize)) { | 3987 | goto drop; |
| 3971 | if (tcp_prune_queue(sk) < 0 || | ||
| 3972 | !sk_rmem_schedule(sk, skb->truesize)) | ||
| 3973 | goto drop; | ||
| 3974 | } | ||
| 3975 | 3988 | ||
| 3976 | /* Disable header prediction. */ | 3989 | /* Disable header prediction. */ |
| 3977 | tp->pred_flags = 0; | 3990 | tp->pred_flags = 0; |
| @@ -4198,6 +4211,32 @@ static void tcp_collapse_ofo_queue(struct sock *sk) | |||
| 4198 | } | 4211 | } |
| 4199 | } | 4212 | } |
| 4200 | 4213 | ||
| 4214 | /* | ||
| 4215 | * Purge the out-of-order queue. | ||
| 4216 | * Return true if queue was pruned. | ||
| 4217 | */ | ||
| 4218 | static int tcp_prune_ofo_queue(struct sock *sk) | ||
| 4219 | { | ||
| 4220 | struct tcp_sock *tp = tcp_sk(sk); | ||
| 4221 | int res = 0; | ||
| 4222 | |||
| 4223 | if (!skb_queue_empty(&tp->out_of_order_queue)) { | ||
| 4224 | NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED); | ||
| 4225 | __skb_queue_purge(&tp->out_of_order_queue); | ||
| 4226 | |||
| 4227 | /* Reset SACK state. A conforming SACK implementation will | ||
| 4228 | * do the same at a timeout based retransmit. When a connection | ||
| 4229 | * is in a sad state like this, we care only about integrity | ||
| 4230 | * of the connection not performance. | ||
| 4231 | */ | ||
| 4232 | if (tp->rx_opt.sack_ok) | ||
| 4233 | tcp_sack_reset(&tp->rx_opt); | ||
| 4234 | sk_mem_reclaim(sk); | ||
| 4235 | res = 1; | ||
| 4236 | } | ||
| 4237 | return res; | ||
| 4238 | } | ||
| 4239 | |||
| 4201 | /* Reduce allocated memory if we can, trying to get | 4240 | /* Reduce allocated memory if we can, trying to get |
| 4202 | * the socket within its memory limits again. | 4241 | * the socket within its memory limits again. |
| 4203 | * | 4242 | * |
| @@ -4231,20 +4270,7 @@ static int tcp_prune_queue(struct sock *sk) | |||
| 4231 | /* Collapsing did not help, destructive actions follow. | 4270 | /* Collapsing did not help, destructive actions follow. |
| 4232 | * This must not ever occur. */ | 4271 | * This must not ever occur. */ |
| 4233 | 4272 | ||
| 4234 | /* First, purge the out_of_order queue. */ | 4273 | tcp_prune_ofo_queue(sk); |
| 4235 | if (!skb_queue_empty(&tp->out_of_order_queue)) { | ||
| 4236 | NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED); | ||
| 4237 | __skb_queue_purge(&tp->out_of_order_queue); | ||
| 4238 | |||
| 4239 | /* Reset SACK state. A conforming SACK implementation will | ||
| 4240 | * do the same at a timeout based retransmit. When a connection | ||
| 4241 | * is in a sad state like this, we care only about integrity | ||
| 4242 | * of the connection not performance. | ||
| 4243 | */ | ||
| 4244 | if (tcp_is_sack(tp)) | ||
| 4245 | tcp_sack_reset(&tp->rx_opt); | ||
| 4246 | sk_mem_reclaim(sk); | ||
| 4247 | } | ||
| 4248 | 4274 | ||
| 4249 | if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) | 4275 | if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) |
| 4250 | return 0; | 4276 | return 0; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 535407d07fa4..a8a40aba846b 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
| @@ -1050,12 +1050,9 @@ ieee80211_drop_unencrypted(struct ieee80211_txrx_data *rx) | |||
| 1050 | if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) && | 1050 | if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) && |
| 1051 | (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && | 1051 | (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && |
| 1052 | (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC && | 1052 | (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC && |
| 1053 | (rx->key || rx->sdata->drop_unencrypted))) { | 1053 | (rx->key || rx->sdata->drop_unencrypted))) |
| 1054 | if (net_ratelimit()) | ||
| 1055 | printk(KERN_DEBUG "%s: RX non-WEP frame, but expected " | ||
| 1056 | "encryption\n", rx->dev->name); | ||
| 1057 | return -EACCES; | 1054 | return -EACCES; |
| 1058 | } | 1055 | |
| 1059 | return 0; | 1056 | return 0; |
| 1060 | } | 1057 | } |
| 1061 | 1058 | ||
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c index 140a0a8c6b02..4e10a95de832 100644 --- a/net/rfkill/rfkill.c +++ b/net/rfkill/rfkill.c | |||
| @@ -92,7 +92,7 @@ void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state) | |||
| 92 | rfkill_states[type] = state; | 92 | rfkill_states[type] = state; |
| 93 | 93 | ||
| 94 | list_for_each_entry(rfkill, &rfkill_list, node) { | 94 | list_for_each_entry(rfkill, &rfkill_list, node) { |
| 95 | if (!rfkill->user_claim) | 95 | if ((!rfkill->user_claim) && (rfkill->type == type)) |
| 96 | rfkill_toggle_radio(rfkill, state); | 96 | rfkill_toggle_radio(rfkill, state); |
| 97 | } | 97 | } |
| 98 | 98 | ||
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index 2d0c29c837f7..4b2682feeedc 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c | |||
| @@ -27,7 +27,7 @@ MODULE_ALIAS_NETPROTO(PF_RXRPC); | |||
| 27 | 27 | ||
| 28 | unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO; | 28 | unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO; |
| 29 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); | 29 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); |
| 30 | MODULE_PARM_DESC(rxrpc_debug, "RxRPC debugging mask"); | 30 | MODULE_PARM_DESC(debug, "RxRPC debugging mask"); |
| 31 | 31 | ||
| 32 | static int sysctl_rxrpc_max_qlen __read_mostly = 10; | 32 | static int sysctl_rxrpc_max_qlen __read_mostly = 10; |
| 33 | 33 | ||
diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c index d1c296f2d617..6d38a81b336d 100644 --- a/net/rxrpc/rxkad.c +++ b/net/rxrpc/rxkad.c | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | unsigned rxrpc_debug; | 32 | unsigned rxrpc_debug; |
| 33 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); | 33 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); |
| 34 | MODULE_PARM_DESC(rxrpc_debug, "rxkad debugging mask"); | 34 | MODULE_PARM_DESC(debug, "rxkad debugging mask"); |
| 35 | 35 | ||
| 36 | struct rxkad_level1_hdr { | 36 | struct rxkad_level1_hdr { |
| 37 | __be32 data_size; /* true data size (excluding padding) */ | 37 | __be32 data_size; /* true data size (excluding padding) */ |
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 7e3c048ba9b1..fc8708a0a25e 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
| @@ -386,6 +386,9 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n) | |||
| 386 | if (n == 0) | 386 | if (n == 0) |
| 387 | return; | 387 | return; |
| 388 | while ((parentid = sch->parent)) { | 388 | while ((parentid = sch->parent)) { |
| 389 | if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS)) | ||
| 390 | return; | ||
| 391 | |||
| 389 | sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid)); | 392 | sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid)); |
| 390 | if (sch == NULL) { | 393 | if (sch == NULL) { |
| 391 | WARN_ON(parentid != TC_H_ROOT); | 394 | WARN_ON(parentid != TC_H_ROOT); |
