Bug-fix: first dequeue lock entry from queue, then perform op in this entry
Here we should first dequeue the current lock queue entry from lock queue then performing the operation in it. This is because when performing op in current lock entry, we may trigger release_lock() function, which go to check the lock queue again. If we did not remove current entry from the queue, release_lock() will try to process it for the second time, which leads to the wrong execution. No reviewer.