> 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

Reply via email to