Make memory allocations outside of spin lock, so that ellocation errors handling will not require unlocking Signed-off-by: Mike Rapoport <mike.rapoport@xxxxxxxxx> --- drivers/staging/wilc1000/wilc_msgqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c b/drivers/staging/wilc1000/wilc_msgqueue.c index 4b1c36e..127b3e5 100644 --- a/drivers/staging/wilc1000/wilc_msgqueue.c +++ b/drivers/staging/wilc1000/wilc_msgqueue.c @@ -63,8 +63,6 @@ int wilc_mq_send(WILC_MsgQueueHandle *pHandle, if (pHandle->bExiting) return WILC_FAIL; - spin_lock_irqsave(&pHandle->strCriticalSection, flags); - /* construct a new message */ pstrMessage = kmalloc(sizeof(Message), GFP_ATOMIC); WILC_NULLCHECK(s32RetStatus, pstrMessage); @@ -75,6 +73,8 @@ int wilc_mq_send(WILC_MsgQueueHandle *pHandle, memcpy(pstrMessage->pvBuffer, pvSendBuffer, u32SendBufferSize); /* add it to the message queue */ + spin_lock_irqsave(&pHandle->strCriticalSection, flags); + if (!pHandle->pstrMessageList) { pHandle->pstrMessageList = pstrMessage; } else { -- 2.1.0 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel