>Looks like you are calling usb_submit_urb() from
command_port_write_callback()
>with GFP_KERNEL where you should use GFP_ATOMIC.
I've tried recompiling the whiteheat module with your suggestion without
solving the problem.
Here is the message log with 2.6.12.3 kernel
After plugging USB cable:
kernel: usb 2-1: new full speed USB device using ohci_hcd and address 2
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for
Connect Tech - WhiteHEAT - (prerenumeration)
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for
Connect Tech - WhiteHEAT
kernel: whiteheat 2-1:1.0: Connect Tech - WhiteHEAT - (prerenumeration)
converter detected
kernel: usbcore: registered new driver whiteheat
kernel: drivers/usb/serial/whiteheat.c: USB ConnectTech WhiteHEAT driver
v2.0
kernel: usb 2-1: USB disconnect, address 2
kernel: whiteheat 2-1:1.0: device disconnected
kernel: usb 2-1: new full speed USB device using ohci_hcd and address 3
kernel: whiteheat 2-1:1.0: Connect Tech - WhiteHEAT converter detected
kernel: drivers/usb/serial/whiteheat.c: Connect Tech - WhiteHEAT: Send
command incomplete [2]
kernel: drivers/usb/serial/whiteheat.c: Connect Tech - WhiteHEAT: Get
results incomplete [20]
kernel: drivers/usb/serial/whiteheat.c: Connect Tech - WhiteHEAT: Driver
v2.0: Firmware v4.07
kernel: usb 2-1: Connect Tech - WhiteHEAT converter now attached to ttyUSB0
kernel: usb 2-1: Connect Tech - WhiteHEAT converter now attached to ttyUSB1
kernel: usb 2-1: Connect Tech - WhiteHEAT converter now attached to ttyUSB2
kernel: usb 2-1: Connect Tech - WhiteHEAT converter now attached to ttyUSB3
After starting microcom:
kernel: Debug: sleeping function called from invalid context at
mm/slab.c:2093
kernel: in_atomic():0, irqs_disabled():1
kernel: [<c015f2f0>] kmem_cache_alloc+0x50/0x60
kernel: [<c02eabfe>] usb_control_msg+0x4e/0xc0
kernel: [<c02ec198>] usb_clear_halt+0x68/0xa0
kernel: [<ded98731>] start_command_port+0x121/0x1e0 [whiteheat]
kernel: [<ded95b6c>] whiteheat_open+0x1c/0x180 [whiteheat]
kernel: [<deab940f>] serial_open+0x9f/0x130 [usbserial]
kernel: [<c01949b3>] link_path_walk+0x63/0x120
kernel: [<c02672a0>] tty_open+0x110/0x440
kernel: [<c021762f>] kobject_get+0xf/0x20
kernel: [<c018c730>] cdev_get+0x40/0x80
kernel: [<c018cee7>] exact_lock+0x7/0x10
kernel: [<c029c911>] kobj_lookup+0x121/0x160
kernel: [<c018c8d4>] chrdev_open+0x134/0x410
kernel: [<c017e77c>] dentry_open+0xcc/0x200
kernel: [<c017e6a0>] filp_open+0x40/0x50
kernel: [<c01926d3>] getname+0xa3/0xf0
kernel: [<c017ed8c>] sys_open+0x3c/0x80
kernel: [<c0103b95>] syscall_call+0x7/0xb
After exiting microcom:
kernel: drivers/usb/serial/whiteheat.c:1030:
spin_lock(drivers/usb/serial/whiteheat.c:c5651a80) already locked by
drivers/usb/serial/whiteheat.c/679
kernel: drivers/usb/serial/whiteheat.c:698:
spin_unlock(drivers/usb/serial/whiteheat.c:c5651a80) not locked
Any other tips?
Thank you,
Giorgio
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO September
19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel