The pre-emption locking dumentation states: RULE #3: Lock acquire and release must be performed by same task A lock acquired in one task must be released by the same task. This means you can't do oddball things like acquire a lock and go off to play while another task releases it. If you want to do something like this, acquire and release the task in the same code path and have the caller wait on an event by the other task. If within a driver a task locked a semaphore on a write, and then a usb interrupt that caused a read of the data being written unlocked the semaphore, would this be wrong? Technically, two tasks are not locking and unlocked but the kernel is unlocking on behalf of no task. Anton -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/