All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <mike.rapoport@gmail.com>
To: Tony Cho <tony.cho@atmel.com>
Cc: gregkh@linuxfoundation.org, devel@driverdev.osuosl.org,
	rachel.kim@atmel.com, chris.park@atmel.com,
	austin.shin@atmel.com, linux-wireless@vger.kernel.org,
	johnny.kim@atmel.com, Nicolas.FERRE@atmel.com,
	adel.noureldin@atmel.com, leo.kim@atmel.com,
	adham.abozaeid@atmel.com
Subject: Re: [PATCH 54/54] staging: wilc1000: wilc_msgqueue.c : remove the goto ERRORHANDER
Date: Tue, 13 Oct 2015 17:08:17 +0300	[thread overview]
Message-ID: <20151013140817.GA21195@zed.strato> (raw)
In-Reply-To: <1444734132-17858-9-git-send-email-tony.cho@atmel.com>

On Tue, Oct 13, 2015 at 08:02:12PM +0900, Tony Cho wrote:
> From: Leo Kim <leo.kim@atmel.com>
> 
> This patch removes goto ERRORHANDER and the result variable in wilc_mq_send.
> Then, the error type is directly returned. If normal operation, freeing memory
> is not needed in this function.
> 
> Signed-off-by: Leo Kim <leo.kim@atmel.com>
> Signed-off-by: Tony Cho <tony.cho@atmel.com>
> ---
>  drivers/staging/wilc1000/wilc_msgqueue.c | 20 +++++---------------
>  1 file changed, 5 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c b/drivers/staging/wilc1000/wilc_msgqueue.c
> index b13809a..60539aa 100644
> --- a/drivers/staging/wilc1000/wilc_msgqueue.c
> +++ b/drivers/staging/wilc1000/wilc_msgqueue.c
> @@ -56,20 +56,17 @@ 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);
> @@ -83,8 +80,8 @@ int wilc_mq_send(WILC_MsgQueueHandle *pHandle,
>  	pstrMessage->pvBuffer = kmemdup(pvSendBuffer, u32SendBufferSize,
>  					GFP_ATOMIC);
>  	if (!pstrMessage->pvBuffer) {
> -		result = -ENOMEM;
> -		goto ERRORHANDLER;
> +		kfree(pstrMessage);
> +		return -ENOMEM;

It seems that the error path returns from the function while still
holding spinlock and semaphore. It would be better to rework allocation
errors handling so that the locks will be released, rather than just
remove goto...

>  	}
>  
>  	/* add it to the message queue */
> @@ -103,14 +100,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
> 
> _______________________________________________
> devel mailing list
> devel@linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

  reply	other threads:[~2015-10-13 14:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-13 11:02 [PATCH 46/54] staging: wilc1000: rename bIsEnabled of struct set_multicast Tony Cho
2015-10-13 11:02 ` [PATCH 47/54] staging: wilc1000: rename u32count " Tony Cho
2015-10-13 11:02 ` [PATCH 48/54] staging: wilc1000: rename au8MacAddr of struct del_sta Tony Cho
2015-10-13 11:02 ` [PATCH 49/54] staging: wilc1000: rename bIsEnabled of struct power_mgmt_param Tony Cho
2015-10-13 11:02 ` [PATCH 50/54] staging: wilc1000: rename u32Timeout " Tony Cho
2015-10-13 11:02 ` [PATCH 51/54] staging: wilc1000: rename au8IPAddr of struct set_ip_addr Tony Cho
2015-10-13 11:02 ` [PATCH 52/54] staging: wilc1000: rename pu8Buffer of struct rcvd_net_info Tony Cho
2015-10-13 11:02 ` [PATCH 53/54] staging: wilc1000: rename u32Length " Tony Cho
2015-10-13 11:02 ` [PATCH 54/54] staging: wilc1000: wilc_msgqueue.c : remove the goto ERRORHANDER Tony Cho
2015-10-13 14:08   ` Mike Rapoport [this message]
2015-10-14  5:26     ` Tony Cho

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151013140817.GA21195@zed.strato \
    --to=mike.rapoport@gmail.com \
    --cc=Nicolas.FERRE@atmel.com \
    --cc=adel.noureldin@atmel.com \
    --cc=adham.abozaeid@atmel.com \
    --cc=austin.shin@atmel.com \
    --cc=chris.park@atmel.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=johnny.kim@atmel.com \
    --cc=leo.kim@atmel.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=rachel.kim@atmel.com \
    --cc=tony.cho@atmel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.