From: "Kurtis D. Rader" <kdrader@us.ibm.com>
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 BUGs.
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.
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 );