10 Jan, 2012

1 commit

  • * 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (232 commits)
    USB: Add USB-ID for Multiplex RC serial adapter to cp210x.c
    xhci: Clean up 32-bit build warnings.
    USB: update documentation for usbmon
    usb: usb-storage doesn't support dynamic id currently, the patch disables the feature to fix an oops
    drivers/usb/class/cdc-acm.c: clear dangling pointer
    drivers/usb/dwc3/dwc3-pci.c: introduce missing kfree
    drivers/usb/host/isp1760-if.c: introduce missing kfree
    usb: option: add ZD Incorporated HSPA modem
    usb: ch9: fix up MaxStreams helper
    USB: usb-skeleton.c: cleanup open_count
    USB: usb-skeleton.c: fix open/disconnect race
    xhci: Properly handle COMP_2ND_BW_ERR
    USB: remove dead code from suspend/resume path
    USB: add quirk for another camera
    drivers: usb: wusbcore: Fix dependency for USB_WUSB
    xhci: Better debugging for critical host errors.
    xhci: Be less verbose during URB cancellation.
    xhci: Remove debugging about ring structure allocation.
    xhci: Remove debugging about toggling cycle bits.
    xhci: Remove debugging for individual transfers.
    ...

    Linus Torvalds
     

09 Jan, 2012

1 commit

  • * 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)
    reiserfs: Properly display mount options in /proc/mounts
    vfs: prevent remount read-only if pending removes
    vfs: count unlinked inodes
    vfs: protect remounting superblock read-only
    vfs: keep list of mounts for each superblock
    vfs: switch ->show_options() to struct dentry *
    vfs: switch ->show_path() to struct dentry *
    vfs: switch ->show_devname() to struct dentry *
    vfs: switch ->show_stats to struct dentry *
    switch security_path_chmod() to struct path *
    vfs: prefer ->dentry->d_sb to ->mnt->mnt_sb
    vfs: trim includes a bit
    switch mnt_namespace ->root to struct mount
    vfs: take /proc/*/mounts and friends to fs/proc_namespace.c
    vfs: opencode mntget() mnt_set_mountpoint()
    vfs: spread struct mount - remaining argument of next_mnt()
    vfs: move fsnotify junk to struct mount
    vfs: move mnt_devname
    vfs: move mnt_list to struct mount
    vfs: switch pnode.h macros to struct mount *
    ...

    Linus Torvalds
     

07 Jan, 2012

1 commit

  • This resolves the conflict in the arch/arm/mach-s3c64xx/s3c6400.c file,
    and it fixes the build error in the arch/x86/kernel/microcode_core.c
    file, that the merge did not catch.

    The microcode_core.c patch was provided by Stephen Rothwell
    who was invaluable in the merge issues involved
    with the large sysdev removal process in the driver-core tree.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

05 Jan, 2012

1 commit

  • On some failures, the country_code field of an acm structure is freed
    without freeing the acm structure itself. Elsewhere, operations including
    memcpy and kfree are performed on the country_code field. The patch sets
    the country_code field to NULL when it is freed, and likewise sets the
    country_code_size field to 0.

    Signed-off-by: Julia Lawall
    Acked-by: Oliver Neukum
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Julia Lawall
     

04 Jan, 2012

1 commit


13 Dec, 2011

1 commit


10 Dec, 2011

2 commits

  • The ACM_READY() macro doesn't seem to do anything useful, and it may
    prevent tty_wait_until_sent() from working properly when called from
    close.

    Previously, acm_tty_chars_in_buffer() returned 0 whenever
    acm->port.count was 0. This means close() could return before all the
    data has actually been written.

    Signed-off-by: Havard Skinnemoen
    Signed-off-by: Greg Kroah-Hartman

    Havard Skinnemoen
     
  • Rework the locking and lifecycle management in the cdc-acm driver.
    Instead of using a global mutex to prevent the 'acm' object from being
    freed, use the tty_port kref to keep the device alive when either the
    USB side or TTY side is still active.

    This allows us to use the global mutex purely for protecting the
    acm_table, while use acm->mutex to guard against disconnect during
    TTY port activation and shutdown.

    The USB-side kref is taken during port initialization in probe(), and
    released at the end of disconnect(). The TTY-side kref is taken in
    install() and released in cleanup(). On disconnect, tty_vhangup() is
    called instead of tty_hangup() to ensure the TTY hangup processing is
    completed before the USB device is taken down.

    The TTY open and close handlers have been gutted and replaced with
    tty_port_open() and tty_port_close() respectively. The driver-specific
    code which used to be there was spread across install(), activate() and
    shutdown().

    Reported-by: Dave Jones
    Cc: Alan Cox
    Cc: Jiri Slaby
    Signed-off-by: Havard Skinnemoen
    Signed-off-by: Greg Kroah-Hartman

    Havard Skinnemoen
     

19 Nov, 2011

1 commit

  • This converts the drivers in drivers/usb/* to use the
    module_usb_driver() macro which makes the code smaller and a bit
    simpler.

    Added bonus is that it removes some unneeded kernel log messages about
    drivers loading and/or unloading.

    Cc: Simon Arlott
    Cc: Duncan Sands
    Cc: Matthieu CASTET
    Cc: Stanislaw Gruszka
    Cc: Pete Zaitcev
    Cc: Oliver Neukum
    Cc: Juergen Stuber
    Cc: Cesar Miquel
    Cc: Matthew Dharm
    Cc: Matthew Wilcox
    Cc: Sarah Sharp
    Cc: Kuninori Morimoto
    Cc: Felipe Balbi
    Cc: Lucas De Marchi
    Cc: Michael Hund
    Cc: Zack Parsons
    Cc: Melchior FRANZ
    Cc: Tomoki Sekiyama
    Cc: Dan Carpenter
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

15 Nov, 2011

1 commit

  • There's a race between the USB disconnect handler and the TTY close
    handler which may cause the acm object to be freed while it's still
    being used. This may lead to things like

    http://article.gmane.org/gmane.linux.usb.general/54250

    and

    https://lkml.org/lkml/2011/5/29/64

    This is the simplest fix I could come up with. Holding on to open_mutex
    while closing the TTY device prevents acm_disconnect() from freeing the
    acm object between acm->port.count drops to 0 and the TTY side of the
    cleanups are finalized.

    Signed-off-by: Havard Skinnemoen
    Cc: Oliver Neukum
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Havard Skinnemoen
     

25 Oct, 2011

1 commit

  • * 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (63 commits)
    PM / Clocks: Remove redundant NULL checks before kfree()
    PM / Documentation: Update docs about suspend and CPU hotplug
    ACPI / PM: Add Sony VGN-FW21E to nonvs blacklist.
    ARM: mach-shmobile: sh7372 A4R support (v4)
    ARM: mach-shmobile: sh7372 A3SP support (v4)
    PM / Sleep: Mark devices involved in wakeup signaling during suspend
    PM / Hibernate: Improve performance of LZO/plain hibernation, checksum image
    PM / Hibernate: Do not initialize static and extern variables to 0
    PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too
    PM / Hibernate: Add resumedelay kernel param in addition to resumewait
    MAINTAINERS: Update linux-pm list address
    PM / ACPI: Blacklist Vaio VGN-FW520F machine known to require acpi_sleep=nonvs
    PM / ACPI: Blacklist Sony Vaio known to require acpi_sleep=nonvs
    PM / Hibernate: Add resumewait param to support MMC-like devices as resume file
    PM / Hibernate: Fix typo in a kerneldoc comment
    PM / Hibernate: Freeze kernel threads after preallocating memory
    PM: Update the policy on default wakeup settings
    PM / VT: Cleanup #if defined uglyness and fix compile error
    PM / Suspend: Off by one in pm_suspend()
    PM / Hibernate: Include storage keys in hibernation image on s390
    ...

    Linus Torvalds
     

18 Sep, 2011

1 commit

  • here is the patch to support Owen SI-30 device.
    This is a pulse counter controller.
    http://www.owen.ru/en/catalog/93788515

    usb-drivers output:
    T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
    D: Ver= 2.00 Cls=02(commc) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
    P: Vendor=03eb ProdID=0030 Rev=01.01
    C: #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=0mA
    I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=00 Driver=cdc_acm
    I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

    This patch is installed on my home system which receives data from this
    controller connected to cold water counter.

    Signed-off-by: Denis Pershin
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Denis Pershin
     

24 Aug, 2011

1 commit

  • Now ${LINUX}/drivers/usb/* can use usb_endpoint_maxp(desc) to get maximum packet size
    instead of le16_to_cpu(desc->wMaxPacketSize).
    This patch fix it up

    Cc: Armin Fuerst
    Cc: Pavel Machek
    Cc: Johannes Erdfelt
    Cc: Vojtech Pavlik
    Cc: Oliver Neukum
    Cc: David Kubicek
    Cc: Johan Hovold
    Cc: Brad Hards
    Acked-by: Felipe Balbi
    Cc: Sebastian Andrzej Siewior
    Cc: Thomas Dahlmann
    Cc: David Brownell
    Cc: David Lopo
    Cc: Alan Stern
    Cc: Michal Nazarewicz
    Cc: Xie Xiaobo
    Cc: Li Yang
    Cc: Jiang Bo
    Cc: Yuan-hsin Chen
    Cc: Darius Augulis
    Cc: Xiaochen Shen
    Cc: Yoshihiro Shimoda
    Cc: OKI SEMICONDUCTOR,
    Cc: Robert Jarzmik
    Cc: Ben Dooks
    Cc: Thomas Abraham
    Cc: Herbert Pötzl
    Cc: Arnaud Patard
    Cc: Roman Weissgaerber
    Acked-by: Sarah Sharp
    Cc: Tony Olech
    Cc: Florian Floe Echtler
    Cc: Christian Lucht
    Cc: Juergen Stuber
    Cc: Georges Toth
    Cc: Bill Ryder
    Cc: Kuba Ober
    Cc: Inaky Perez-Gonzalez
    Signed-off-by: Kuninori Morimoto
    Signed-off-by: Greg Kroah-Hartman

    Kuninori Morimoto
     

20 Aug, 2011

1 commit

  • This patch (as1482) adds a macro for testing whether or not a
    pm_message value represents an autosuspend or autoresume (i.e., a
    runtime PM) event. Encapsulating this notion seems preferable to
    open-coding the test all over the place.

    Signed-off-by: Alan Stern
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Rafael J. Wysocki

    Alan Stern
     

09 Aug, 2011

1 commit


02 Jul, 2011

1 commit


07 Jun, 2011

1 commit


12 May, 2011

1 commit

  • The Droids MuIn LCD operates like a serial remote terminal.
    Data received are displayed directly on the LCD. This patch
    fixes the kernel null pointer oops when it is plugged in.

    Add NO_DATA_INTERFACE quirk to tell the driver that "control"
    and "data" interfaces are not separated for this device, which
    prevents dereferencing a null pointer in the device probe code.

    Signed-off-by: Erik Slagter
    Signed-off-by: Maxin B. John
    Tested-by: Erik Slagter
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Erik Slagter
     

30 Apr, 2011

1 commit


14 Apr, 2011

13 commits


31 Mar, 2011

1 commit


24 Mar, 2011

4 commits

  • Fix potential null-pointer exception on disconnect introduced by commit
    11ea859d64b69a747d6b060b9ed1520eab1161fe (USB: additional power savings
    for cdc-acm devices that support remote wakeup).

    Only access acm->dev after making sure it is non-null in control urb
    completion handler.

    Cc: stable
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Must check return value of tty_port_tty_get.

    Cc: stable
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Prevent read urbs from being resubmitted from tasklet after port close.

    The receive tasklet was not disabled on port close, which could lead to
    corruption of receive lists on consecutive port open. In particular,
    read urbs could be re-submitted before port open, added to free list in
    open, and then added a second time to the free list in the completion
    handler.

    cdc-acm.c: Entering acm_tty_open.
    cdc-acm.c: acm_control_msg: rq: 0x22 val: 0x3 len: 0x0 result: 0
    cdc-acm.c: Entering acm_rx_tasklet
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da280, rcv 0xf57fbc24, buf 0xf57fbd64
    cdc-acm.c: set line: 115200 0 0 8
    cdc-acm.c: acm_control_msg: rq: 0x20 val: 0x0 len: 0x7 result: 7
    cdc-acm.c: acm_tty_close
    cdc-acm.c: acm_port_down
    cdc-acm.c: acm_control_msg: rq: 0x22 val: 0x0 len: 0x0 result: 0
    cdc-acm.c: acm_ctrl_irq - urb shutting down with status: -2
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da300, rcv 0xf57fbc10, buf 0xf57fbd50
    cdc-acm.c: Entering acm_read_bulk with status -2
    cdc_acm 4-1:1.1: Aborting, acm not ready
    cdc-acm.c: Entering acm_read_bulk with status -2
    cdc_acm 4-1:1.1: Aborting, acm not ready
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da380, rcv 0xf57fbbfc, buf 0xf57fbd3c
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da400, rcv 0xf57fbbe8, buf 0xf57fbd28
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da480, rcv 0xf57fbbd4, buf 0xf57fbd14
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da900, rcv 0xf57fbbc0, buf 0xf57fbd00
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da980, rcv 0xf57fbbac, buf 0xf57fbcec
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50daa00, rcv 0xf57fbb98, buf 0xf57fbcd8
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50daa80, rcv 0xf57fbb84, buf 0xf57fbcc4
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dab00, rcv 0xf57fbb70, buf 0xf57fbcb0
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dab80, rcv 0xf57fbb5c, buf 0xf57fbc9c
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dac00, rcv 0xf57fbb48, buf 0xf57fbc88
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dac80, rcv 0xf57fbb34, buf 0xf57fbc74
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dad00, rcv 0xf57fbb20, buf 0xf57fbc60
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50dad80, rcv 0xf57fbb0c, buf 0xf57fbc4c
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da880, rcv 0xf57fbaf8, buf 0xf57fbc38
    cdc-acm.c: Entering acm_tty_open.
    cdc-acm.c: acm_control_msg: rq: 0x22 val: 0x3 len: 0x0 result: 0
    cdc-acm.c: Entering acm_rx_tasklet
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da280, rcv 0xf57fbc24, buf 0xf57fbd64
    cdc-acm.c: Entering acm_tty_write to write 3 bytes,
    cdc-acm.c: Get 3 bytes...
    cdc-acm.c: acm_write_start susp_count: 0
    cdc-acm.c: Entering acm_read_bulk with status 0
    ------------[ cut here ]------------
    WARNING: at /home/johan/src/linux/linux-2.6/lib/list_debug.c:57 list_del+0x10c/0x120()
    Hardware name: Vostro 1520
    list_del corruption. next->prev should be f57fbc10, but was f57fbaf8
    Modules linked in: cdc_acm
    Pid: 3, comm: ksoftirqd/0 Not tainted 2.6.37+ #39
    Call Trace:
    [] warn_slowpath_common+0x72/0xa0
    [] ? list_del+0x10c/0x120
    [] ? list_del+0x10c/0x120
    [] warn_slowpath_fmt+0x33/0x40
    [] list_del+0x10c/0x120
    [] acm_rx_tasklet+0xef/0x3e0 [cdc_acm]
    [] ? net_rps_action_and_irq_enable+0x6d/0x80
    [] tasklet_action+0xe6/0x140
    [] __do_softirq+0xaf/0x210
    [] ? __do_softirq+0x0/0x210
    [] ? run_ksoftirqd+0x8a/0x1c0
    [] ? run_ksoftirqd+0x0/0x1c0
    [] ? kthread+0x74/0x80
    [] ? kthread+0x0/0x80
    [] ? kernel_thread_helper+0x6/0x10
    ---[ end trace efd9a11434f0082e ]---
    ------------[ cut here ]------------
    WARNING: at /home/johan/src/linux/linux-2.6/lib/list_debug.c:57 list_del+0x10c/0x120()
    Hardware name: Vostro 1520
    list_del corruption. next->prev should be f57fbd50, but was f57fbdb0
    Modules linked in: cdc_acm
    Pid: 3, comm: ksoftirqd/0 Tainted: G W 2.6.37+ #39
    Call Trace:
    [] warn_slowpath_common+0x72/0xa0
    [] ? list_del+0x10c/0x120
    [] ? list_del+0x10c/0x120
    [] warn_slowpath_fmt+0x33/0x40
    [] list_del+0x10c/0x120
    [] acm_rx_tasklet+0x106/0x3e0 [cdc_acm]
    [] ? net_rps_action_and_irq_enable+0x6d/0x80
    [] tasklet_action+0xe6/0x140
    [] __do_softirq+0xaf/0x210
    [] ? __do_softirq+0x0/0x210
    [] ? run_ksoftirqd+0x8a/0x1c0
    [] ? run_ksoftirqd+0x0/0x1c0
    [] ? kthread+0x74/0x80
    [] ? kthread+0x0/0x80
    [] ? kernel_thread_helper+0x6/0x10
    ---[ end trace efd9a11434f0082f ]---
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da300, rcv 0xf57fbc10, buf 0xf57fbd50
    cdc-acm.c: disconnected from network
    cdc-acm.c: acm_rx_tasklet: sending urb 0xf50da380, rcv 0xf57fbbfc, buf 0xf57fbd3c
    cdc-acm.c: Entering acm_rx_tasklet
    ------------[ cut here ]------------
    WARNING: at /home/johan/src/linux/linux-2.6/lib/list_debug.c:48 list_del+0xd5/0x120()
    Hardware name: Vostro 1520
    list_del corruption, next is LIST_POISON1 (00100100)
    Modules linked in: cdc_acm
    Pid: 3, comm: ksoftirqd/0 Tainted: G W 2.6.37+ #39
    Call Trace:
    [] warn_slowpath_common+0x72/0xa0
    [] ? list_del+0xd5/0x120
    [] ? list_del+0xd5/0x120
    [] warn_slowpath_fmt+0x33/0x40
    [] list_del+0xd5/0x120
    [] acm_rx_tasklet+0x2dc/0x3e0 [cdc_acm]
    [] ? trace_hardirqs_on+0xb/0x10
    [] ? tasklet_action+0x60/0x140
    [] tasklet_action+0xe6/0x140
    [] __do_softirq+0xaf/0x210
    [] ? __do_softirq+0x0/0x210
    [] ? run_ksoftirqd+0x8a/0x1c0
    [] ? run_ksoftirqd+0x0/0x1c0
    [] ? kthread+0x74/0x80
    [] ? kthread+0x0/0x80
    [] ? kernel_thread_helper+0x6/0x10
    ---[ end trace efd9a11434f00830 ]---
    BUG: unable to handle kernel paging request at 00200200
    IP: [] list_del+0x1d/0x120
    *pde = 00000000
    Oops: 0000 [#1] PREEMPT SMP
    last sysfs file: /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/tty/ttyACM0/uevent
    Modules linked in: cdc_acm
    Pid: 3, comm: ksoftirqd/0 Tainted: G W 2.6.37+ #39 0T816J/Vostro 1520
    EIP: 0060:[] EFLAGS: 00010046 CPU: 0
    EIP is at list_del+0x1d/0x120
    EAX: f57fbd3c EBX: f57fb800 ECX: ffff8000 EDX: 00200200
    ESI: f57fbe90 EDI: f57fbd3c EBP: f600bf54 ESP: f600bf3c
    DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
    Process ksoftirqd/0 (pid: 3, ti=f600a000 task=f60791c0 task.ti=f6082000)
    Stack:
    c1527e84 00000030 c1527e54 00100100 f57fb800 f57fbd3c f600bf98 f8051fac
    f8053104 f8052b94 f600bf6c c106dbab f600bf80 00000286 f60791c0 c1042b30
    f57fbda8 f57f5800 f57fbdb0 f57fbd80 f57fbe7c c1656b04 00000000 f600bfb0
    Call Trace:
    [] ? acm_rx_tasklet+0x2dc/0x3e0 [cdc_acm]
    [] ? trace_hardirqs_on+0xb/0x10
    [] ? tasklet_action+0x60/0x140
    [] ? tasklet_action+0xe6/0x140
    [] ? __do_softirq+0xaf/0x210
    [] ? __do_softirq+0x0/0x210

    [] ? run_ksoftirqd+0x8a/0x1c0
    [] ? run_ksoftirqd+0x0/0x1c0
    [] ? kthread+0x74/0x80
    [] ? kthread+0x0/0x80
    [] ? kernel_thread_helper+0x6/0x10
    Code: ff 48 14 e9 57 ff ff ff 90 90 90 90 90 90 55 89 e5 83 ec 18 81 38 00 01 10 00 0f 84 9c 00 00 00 8b 50 04 81 fa 00 02 20 00 74 33 12 39 d0 75 5c 8b 10 8b 4a 04 39 c8 0f 85 b5 00 00 00 8b 48
    EIP: [] list_del+0x1d/0x120 SS:ESP 0068:f600bf3c
    CR2: 0000000000200200
    ---[ end trace efd9a11434f00831 ]---
    Kernel panic - not syncing: Fatal exception in interrupt
    Pid: 3, comm: ksoftirqd/0 Tainted: G D W 2.6.37+ #39
    Call Trace:
    [] ? printk+0x1d/0x24
    [] panic+0x66/0x15c
    [] oops_end+0x8f/0x90
    [] no_context+0xc6/0x160
    [] __bad_area_nosemaphore+0x98/0x140
    [] ? release_console_sem+0x1d8/0x210
    [] bad_area_nosemaphore+0x17/0x20
    [] do_page_fault+0x279/0x420
    [] ? show_trace+0x1f/0x30
    [] ? printk+0x1d/0x24
    [] ? do_page_fault+0x0/0x420
    [] error_code+0x5f/0x64
    [] ? select_task_rq_fair+0x37b/0x6a0
    [] ? do_page_fault+0x0/0x420
    [] ? list_del+0x1d/0x120
    [] acm_rx_tasklet+0x2dc/0x3e0 [cdc_acm]
    [] ? trace_hardirqs_on+0xb/0x10
    [] ? tasklet_action+0x60/0x140
    [] tasklet_action+0xe6/0x140
    [] __do_softirq+0xaf/0x210
    [] ? __do_softirq+0x0/0x210
    [] ? run_ksoftirqd+0x8a/0x1c0
    [] ? run_ksoftirqd+0x0/0x1c0
    [] ? kthread+0x74/0x80
    [] ? kthread+0x0/0x80
    [] ? kernel_thread_helper+0x6/0x10
    panic occurred, switching back to text console
    ------------[ cut here ]------------

    Cc: stable
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • In the WDM class driver a disconnect event leads to calls to
    usb_free_coherent to put back two USB DMA buffers allocated earlier.
    The call to usb_free_coherent uses a different size parameter
    (desc->wMaxCommand) than the corresponding call to usb_alloc_coherent
    (desc->bMaxPacketSize0).

    When a disconnect event occurs, this leads to 'bad dma' complaints
    from usb core because the USB DMA buffer is being pushed back to the
    'buffer-2048' pool from which it has not been allocated.

    This patch against the most recent linux-2.6 kernel ensures that the
    parameters used by usb_alloc_coherent & usb_free_coherent calls in
    cdc-wdm.c match.

    Signed-off-by: Robert Lukassen
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Robert Lukassen
     

25 Feb, 2011

1 commit


18 Feb, 2011

2 commits