>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

Reply via email to