linux-wireless.vger.kernel.org archive mirror
 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 V2] staging: wilc1000: wilc_msgqueue.c : remove the goto ERRORHANDER
Date: Wed, 14 Oct 2015 13:39:13 +0300	[thread overview]
Message-ID: <20151014103913.GB25667@zed.strato> (raw)
In-Reply-To: <561E17E7.2080407@atmel.com>

On Wed, Oct 14, 2015 at 05:52:55PM +0900, Tony Cho wrote:
> 
> On 2015년 10월 14일 17:32, Mike Rapoport wrote:
> >On Wed, Oct 14, 2015 at 02:55:43PM +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.
> >>If an error occurs, returns an error after releasing the spin lock.
> >>
> >>Signed-off-by: Leo Kim <leo.kim@atmel.com>
> >>Signed-off-by: Tony Cho <tony.cho@atmel.com>
> >>---
> >>V2: add releasing spinlock before returnig an error when an error happens.
> >>---
> >>  drivers/staging/wilc1000/wilc_msgqueue.c | 28 ++++++++++++----------------
> >>  1 file changed, 12 insertions(+), 16 deletions(-)
> >>  	if (!pstrMessage->pvBuffer) {
> >>-		result = -ENOMEM;
> >>-		goto ERRORHANDLER;
> >>+		spin_unlock_irqrestore(&pHandle->strCriticalSection, flags);
> >You are still holding pHandle->hSem here. Moreover, all error paths
> >return while still holding pHandle->hSem.
> 
> Can you explain to me what you mean for holding hsem here? Basically, this function cannot release
> 
> the semaphore (of course, this synchronization mechanism will be changed, anyway) if errors happen.
> 
> The thread will do his work when it is released without unexpected situations.

If the semaphore should not be released if an error happens, you can
ignore my comments. 
 
> >I'd suggest, that instead of trying to return immediately, you'd better
> >move error handling code to the end of the function and use goto and
> >several labels to do appropriate cleanups depending on when the error
> >was caught. E.g.
> 
> I don't want to use goto statement as possible as I can. Do you concern semaphore uses in this function?
> Thanks for your review,
> Tony.
> 
> >
> >mem_free:
> >	kfree(pstrMessage);
> >release_lock:	
> >	spin_unlock_irqrestore(&pHandle->strCriticalSection, flags);
> >release_sem:
> >	up(&pHandle->sem);
> >out:
> >	return result;
> >
> >>+		kfree(pstrMessage);
> >>+		return -ENOMEM;
> >>  	}
> >>  	/* add it to the message queue */
> >>@@ -103,14 +106,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-14 10:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14  5:55 [PATCH V2] staging: wilc1000: wilc_msgqueue.c : remove the goto ERRORHANDER Tony Cho
2015-10-14  8:32 ` Mike Rapoport
2015-10-14  8:52   ` Tony Cho
2015-10-14 10:39     ` Mike Rapoport [this message]
2015-10-17  4:28     ` Greg KH
2015-10-19  1:21       ` 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=20151014103913.GB25667@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 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).