diff -r d45b74d3fb20 -r d57b86b1867a kernel/eka/drivers/usbcc/ps_usbc.cpp --- a/kernel/eka/drivers/usbcc/ps_usbc.cpp Tue Aug 31 11:40:45 2010 +0100 +++ b/kernel/eka/drivers/usbcc/ps_usbc.cpp Mon Sep 13 15:16:07 2010 +0100 @@ -1078,9 +1078,11 @@ { OstTraceDef0(OST_TRACE_CATEGORY_RND, TRACE_NORMAL, DUSBCLIENTCONTROLLER_SETUPREADBUFFER_DUP11, " iEp0_RxExtraData: trying again..."); const TBool rx_data = iEp0DataReceiving; - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); + + //Note: Currently, ProcessEp0ReceiveDone() is only called in the thread context, + // but in the future, if this ProcessEp0ReceiveDone() is called in IRQ context, + // we have to notice that ProcessEp0ReceiveDone() has hold a fast mutex already. err = ProcessEp0ReceiveDone(iEp0_RxExtraCount); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); if (err == KErrNone) { iEp0_RxExtraData = EFalse;