![]() | |||||||||||
Messages in this thread Patch in this message |
http://bugme.osdl.org/show_bug.cgi?id=1365 The digi_acceleport.c USB serial driver has a bogus "address of" operator that results in panics like this: kernel BUG at include/asm/spinlock.h:120! invalid operand: 0000 [#1] Call Trace: [<f88e9000>] digi_wakeup_write_lock+0x0/0xaa [digi_acceleport] [<c0236842>] console_callback+0xa0/0xc2 [<c0136ebc>] worker_thread+0x228/0x3ce [<f88e9000>] digi_wakeup_write_lock+0x0/0xaa [digi_acceleport] [<c011e8b6>] default_wake_function+0x0/0x2e [<c010993e>] ret_from_fork+0x6/0x14 [<c011e8b6>] default_wake_function+0x0/0x2e [<c0136c94>] worker_thread+0x0/0x3ce [<c010740d>] kernel_thread_helper+0x5/0xc The problem is that digi_wakeup_write_lock() takes a pointer to a struct usb_serial_port. However, what gets passed is a pointer to a pointer to a struct usb_serial_port. === diff -rup drivers/usb/serial/digi_acceleport.c.orig drivers/usb/serial/digi_acceleport.c --- drivers/usb/serial/digi_acceleport.c.orig 2003-10-15 22:03:26.000000000 -0700 +++ drivers/usb/serial/digi_acceleport.c 2003-10-15 21:10:21.000000000 -0700 @@ -1728,8 +1728,7 @@ dbg( "digi_startup: TOP" ); init_waitqueue_head( &priv->dp_flush_wait ); priv->dp_in_close = 0; init_waitqueue_head( &priv->dp_close_wait ); - INIT_WORK(&priv->dp_wakeup_work, (void *)digi_wakeup_write_lock, - (void *)(&serial->port[i])); + INIT_WORK(&priv->dp_wakeup_work, digi_wakeup_write_lock, serial->port[i]); /* initialize write wait queue for this port */ init_waitqueue_head( &serial->port[i]->write_wait ); -- Kurtis D. Rader, Systems Support Engineer service: 800-IBM-SERV IBM Integrated Technology Services email: kdrader@us.ibm.com 15300 SW Koll Pkwy, MS RHE2-O2 DID: +1 503-578-3714 Beaverton, OR 97006-6063 http://www.ibm.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||
| Last update: 2005-03-22 13:49 [from the cache] ©2003-2008 | |||||||||||