* [PATCH V4] staging: wilc1000: wilc_msgqueue.c : remove goto statement
@ 2015-10-27 8:33 Glen Lee
2015-10-28 5:23 ` Sudip Mukherjee
0 siblings, 1 reply; 2+ messages in thread
From: Glen Lee @ 2015-10-27 8:33 UTC (permalink / raw)
To: gregkh
Cc: devel, linux-wireless, tony.cho, glen.lee, leo.kim, austin.shin,
adel.noureldin, adham.abozaeid, Nicolas.FERRE
From: Leo Kim <leo.kim@atmel.com>
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.
Signee-eff-by: Lee Kim <leo.kim@atmel.com>
Signed-off-by: Tony Cho <tony.cho@atmel.com>
Signed-off-by: Glen Lee <glen.lee@atmel.com>
---
drivers/staging/wilc1000/wilc_msgqueue.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c b/drivers/staging/wilc1000/wilc_msgqueue.c
index b13809a..0eff121 100644
--- a/drivers/staging/wilc1000/wilc_msgqueue.c
+++ b/drivers/staging/wilc1000/wilc_msgqueue.c
@@ -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;
}
/*!
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH V4] staging: wilc1000: wilc_msgqueue.c : remove goto statement
2015-10-27 8:33 [PATCH V4] staging: wilc1000: wilc_msgqueue.c : remove goto statement Glen Lee
@ 2015-10-28 5:23 ` Sudip Mukherjee
0 siblings, 0 replies; 2+ messages in thread
From: Sudip Mukherjee @ 2015-10-28 5:23 UTC (permalink / raw)
To: Glen Lee
Cc: gregkh, devel, austin.shin, linux-wireless, Nicolas.FERRE,
adel.noureldin, tony.cho, leo.kim, adham.abozaeid
On Tue, Oct 27, 2015 at 05:33:37PM +0900, Glen Lee wrote:
> From: Leo Kim <leo.kim@atmel.com>
>
> 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.
>
> Signee-eff-by: Lee Kim <leo.kim@atmel.com>
Signed-off-by?
regards
sudip
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-10-28 5:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-27 8:33 [PATCH V4] staging: wilc1000: wilc_msgqueue.c : remove goto statement Glen Lee
2015-10-28 5:23 ` Sudip Mukherjee
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).