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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[Submit] [Site Home] [Kernel Newbies] [Memory] [Consulting] [Netfilter] [Bugtraq] [Rubini] [Photo] [DVD Store] [Gimp] [Yosemite News] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Video 4 Linux] [Linux for the blind] [Linux Resources]