All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Cho <tony.cho@atmel.com>
To: Chandra Gorentla <csgorentla@gmail.com>,
	Greg KH <gregkh@linuxfoundation.org>
Cc: <dan.carpenter@oracle.com>, <johnny.kim@atmel.com>,
	<rachel.kim@atmel.com>, <chris.park@atmel.com>,
	<linux-wireless@vger.kernel.org>, <devel@driverdev.osuosl.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] drivers: staging: wilc1000: Call kfree only for error cases
Date: Mon, 5 Oct 2015 12:23:24 +0900	[thread overview]
Message-ID: <5611ED2C.7080002@atmel.com> (raw)
In-Reply-To: <20151004102859.GB27051@gcs-HP-Notebook>



On 2015년 10월 04일 19:28, Chandra Gorentla wrote:
> On Sun, Oct 04, 2015 at 09:44:57AM +0100, Greg KH wrote:
>> On Sat, Oct 03, 2015 at 02:57:30PM +0530, Chandra S Gorentla wrote:
>>>   - kfree is being called for the members of the queue without
>>>     de-queuing them; they are just inserted within this function;
>>>     they are supposed to be de-queued and freed in a function
>>>     for receiving the queue items
>>>   - goto statements are removed
>>>   - After kfree correction, there is no need for target block
>>>     of goto statement; hence it is removed
>>>
>>> Signed-off-by: Chandra S Gorentla <csgorentla@gmail.com>
>>> ---
>>>   drivers/staging/wilc1000/wilc_msgqueue.c | 22 ++++++----------------
>>>   1 file changed, 6 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c b/drivers/staging/wilc1000/wilc_msgqueue.c
>>> index 284a3f5..eae90be 100644
>>> --- a/drivers/staging/wilc1000/wilc_msgqueue.c
>>> +++ b/drivers/staging/wilc1000/wilc_msgqueue.c
>>> @@ -56,32 +56,30 @@ 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;
>>>   	}
>>>   
>>>   	/* construct a new message */
>>>   	pstrMessage = kmalloc(sizeof(Message), GFP_ATOMIC);
>>>   	if (!pstrMessage)
>>>   		return -ENOMEM;
>>> +
>>>   	pstrMessage->u32Length = u32SendBufferSize;
>>>   	pstrMessage->pstrNext = NULL;
>>>   	pstrMessage->pvBuffer = kmalloc(u32SendBufferSize, GFP_ATOMIC);
>>>   	if (!pstrMessage->pvBuffer) {
>>> -		result = -ENOMEM;
>>> -		goto ERRORHANDLER;
>>> +		kfree(pstrMessage);
>>> +		return -ENOMEM;
>>>   	}
>>>   	memcpy(pstrMessage->pvBuffer, pvSendBuffer, u32SendBufferSize);
>>>   
>>> @@ -102,15 +100,7 @@ int wilc_mq_send(WILC_MsgQueueHandle *pHandle,
>>>   	spin_unlock_irqrestore(&pHandle->strCriticalSection, flags);
>>>   
>>>   	up(&pHandle->hSem);
>>> -
>>> -ERRORHANDLER:
>>> -	/* error occured, free any allocations */
>>> -	if (pstrMessage) {
>>> -		kfree(pstrMessage->pvBuffer);
>>> -		kfree(pstrMessage);
>>> -	}
>>> -
>>> -	return result;
>>> +	return 0;
>> Aren't you now leaking memory as you aren't freeing pstrMessage and the
>> buffer on the "normal" return path?
> In the normal path kfree is called in a separate (wilc_mq_recv) function.
> The purpose of the currently modified function (wilc_mq_send) is to post
> a message to a queue by allocating memory for the message.  The receiver
> function is supposed to remove the message from the queue and free the
> memory.
>
This patch is reasonable and normal free is done in recv function as Chandra said.

Thanks,

Tony.

>> thanks,
>>
>> greg k-h
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2015-10-05  3:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-03  9:27 [PATCH 1/2] drivers: staging: wilc1000: Move spin lock to the start of critical section Chandra S Gorentla
2015-10-03  9:27 ` [PATCH 2/2] drivers: staging: wilc1000: Call kfree only for error cases Chandra S Gorentla
2015-10-04  8:44   ` Greg KH
2015-10-04  9:16     ` Dan Carpenter
2015-10-04 10:10       ` Greg KH
2015-10-04 10:28     ` Chandra Gorentla
2015-10-05  3:23       ` Tony Cho [this message]
2015-10-04  8:43 ` [PATCH 1/2] drivers: staging: wilc1000: Move spin lock to the start of critical section Greg KH
2015-10-04 10:07   ` Chandra Gorentla
2015-10-04 10:19     ` Greg KH
2015-10-05  3:23   ` 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=5611ED2C.7080002@atmel.com \
    --to=tony.cho@atmel.com \
    --cc=chris.park@atmel.com \
    --cc=csgorentla@gmail.com \
    --cc=dan.carpenter@oracle.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=johnny.kim@atmel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=rachel.kim@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.