staging: wilc1000: wilc_msgqueue.c : remove goto statement
This patch removes goto statement and moves the spin lock position. If a memory allocation fails, directly returns an error. The spin lock actually protects the pHandle. Therefore, call spin lock just before pHandle is used. Signed-off-by: Leo Kim <leo.kim@atmel.com> Signed-off-by: Tony Cho <tony.cho@atmel.com> Signed-off-by: Glen Lee <glen.lee@atmel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
82bb18e1bd
commit
dbef61e749
|
@ -56,37 +56,35 @@ int wilc_mq_destroy(WILC_MsgQueueHandle *pHandle)
|
|||
int wilc_mq_send(WILC_MsgQueueHandle *pHandle,
|
||||
const void *pvSendBuffer, u32 u32SendBufferSize)
|
||||
{
|
||||
int result = 0;
|
||||
unsigned long flags;
|
||||
Message *pstrMessage = NULL;
|
||||
|
||||
if ((!pHandle) || (u32SendBufferSize == 0) || (!pvSendBuffer)) {
|
||||
PRINT_ER("pHandle or pvSendBuffer is null\n");
|
||||
result = -EFAULT;
|
||||
goto ERRORHANDLER;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
if (pHandle->bExiting) {
|
||||
PRINT_ER("pHandle fail\n");
|
||||
result = -EFAULT;
|
||||
goto ERRORHANDLER;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&pHandle->strCriticalSection, flags);
|
||||
|
||||
/* construct a new message */
|
||||
pstrMessage = kmalloc(sizeof(Message), GFP_ATOMIC);
|
||||
if (!pstrMessage)
|
||||
return -ENOMEM;
|
||||
|
||||
pstrMessage->u32Length = u32SendBufferSize;
|
||||
pstrMessage->pstrNext = NULL;
|
||||
pstrMessage->pvBuffer = kmemdup(pvSendBuffer, u32SendBufferSize,
|
||||
GFP_ATOMIC);
|
||||
if (!pstrMessage->pvBuffer) {
|
||||
result = -ENOMEM;
|
||||
goto ERRORHANDLER;
|
||||
kfree(pstrMessage);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&pHandle->strCriticalSection, flags);
|
||||
|
||||
/* add it to the message queue */
|
||||
if (!pHandle->pstrMessageList) {
|
||||
pHandle->pstrMessageList = pstrMessage;
|
||||
|
@ -103,14 +101,7 @@ int wilc_mq_send(WILC_MsgQueueHandle *pHandle,
|
|||
|
||||
up(&pHandle->hSem);
|
||||
|
||||
ERRORHANDLER:
|
||||
/* error occured, free any allocations */
|
||||
if (pstrMessage) {
|
||||
kfree(pstrMessage->pvBuffer);
|
||||
kfree(pstrMessage);
|
||||
}
|
||||
|
||||
return result;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
Loading…
Reference in New Issue