> You _cannot_ even in principle synchronize between a completion > handler and process context. It's a one way street of communication. > That race is unavoidable.
What about spinlocked data structures? And waitqueues? And the various other constructs specifically designed for achieving such synchronization? > How on earth are you supposed to kill an urb that is freed this way, > if you cannot use usb_unlink_urb ? There are a lot of ways, and they all involve using those constructs. I'm sure you can figure several of them out if you think about it for a few minutes. (Hint: if you have a spinlock that protects access to a pointer outside the completion handler, and that pointer is nulled when its data is freed, what else might you need to do??) _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
