[PATCH 00/10] usb-serial: Switches from spin lock to atomic_t.
From: Luiz Fernando Capitulino
Date: Tue Dec 06 2005 - 07:14:41 EST
Greg,
Don't get scared. :-)
As showed by Eduardo Habkost some days ago, the spin lock 'lock' in the
struct 'usb_serial_port' is being used by some USB serial drivers to protect
the access to the 'write_urb_busy' member of the same struct.
The spin lock however, is needless: we can change 'write_urb_busy' type
to be atomic_t and remove all the spin lock usage.
The following patch series does that. It introduces a very simple URB write
lock abstraction and four macros to do the same job currently done by the
spin lock.
The final result is a simpler and easy to read/understand code, with no
spin lock at all.
I've splited the work that way: the frist patch introduces the new macros;
from the second patch until the eight all the drivers are ported; patch
nine removes the 'lock' member from the usb-serial driver and patch ten
adds the write URB lock initialization for all the ports.
An important note is about the omninet driver. In its omninet_write_room()
method, it's accessing the 'write_urb_busy' member from the 'serial->port[1]'
port, and _not_ from the usb_serial_port passed as its argument. I have no
sure if it is right, but my port does perserve that semantic.
As I don't have any of the changed drivers, I have only made the compilation
test. Would be good to hold the patches in -mm for a while.
A final note: all the patches have been made with my usb-serial fixes
(which are already in your tree) applyed. They are:
usbserial-adds-missing-checks-and-bug-fix.patch
usbserial-race-condition-fix.patch
Thank you,
--
Luiz Fernando N. Capitulino
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/