Am Freitag, 22. Dezember 2006 21:51 schrieb J:
I am dropping linux-kernel. This is an USB issue.
> Now, I am not yet 100% convinced that ref counting
> will, indeed, work. Atomics are known to have
> problems on SMP CPUs, which can reorder operations.
> But I would not discard atomics yet.
> Global mutex is go ugly.
Well, to be blunt, this driver has further locking problems, eg:
static int serial_write (struct tty_struct * tty, const unsigned char *buf, int
count)
{
struct usb_serial_port *port = tty->driver_data;
int retval = -EINVAL;
if (!port || port->serial->dev->state == USB_STATE_NOTATTACHED)
goto exit;
dbg("%s - port %d, %d byte(s)", __FUNCTION__, port->number, count);
if (!port->open_count) {
dbg("%s - port not opened", __FUNCTION__);
goto exit;
}
/* pass on to the driver specific version of this function */
retval = port->serial->type->write(port, buf, count);
exit:
return retval;
}
There's no use checking for attachement. The state may have changed.
In fact, if a device is disconnected via sysfs, this code will happily write
to a device somebody else has claimed.
Regards
Oliver
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel