All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Claudiu Beznea <claudiu.beznea@gmail.com>
Cc: gregkh@linuxfoundation.org, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Staging: wlan-ng: memory allocated inside mkimage() is not freed if subsequent calls fails.
Date: Tue, 26 Apr 2016 14:46:43 +0300	[thread overview]
Message-ID: <20160426100032.GL4298@mwanda> (raw)
In-Reply-To: <1461516013-4383-1-git-send-email-claudiu.beznea@gmail.com>

This patch makes the code better and it's an improvement so I'm fine
with merging it as-is.

On Sun, Apr 24, 2016 at 07:40:13PM +0300, Claudiu Beznea wrote:
> This patch frees memory allocated inside mkimage() in case mkimage()
> or any other subsequent calls inside prism2_fwapply() from prism2fw.c
> file fails. To fix this I introduces goto labels where the free
> operation is done in case some operations fails. After the introduction
> of goto labels has been done, in order to use the same return path,
> "return x" instuctions were replaced with "goto" instuctions.
> 
> Signed-off-by: Claudiu Beznea <claudiu.beznea@gmail.com>
> ---
>  drivers/staging/wlan-ng/prism2fw.c | 28 ++++++++++++++++------------
>  1 file changed, 16 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/staging/wlan-ng/prism2fw.c b/drivers/staging/wlan-ng/prism2fw.c
> index 8564d9e..56bffd9 100644
> --- a/drivers/staging/wlan-ng/prism2fw.c
> +++ b/drivers/staging/wlan-ng/prism2fw.c
> @@ -278,7 +278,8 @@ static int prism2_fwapply(const struct ihex_binrec *rfptr,
>  	/* Build the PDA we're going to use. */
>  	if (read_cardpda(&pda, wlandev)) {
>  		netdev_err(wlandev->netdev, "load_cardpda failed, exiting.\n");
> -		return 1;
> +		result = 1;
> +		goto out;

It's better to do direct returns instead of misleading gotos that don't
do anything.  "Future proofing" is a waste of time and introduces more
bugs than it prevents.  Just write for the present.  Present proof the
code.

>  	}
>  
>  	/* read the card's PRI-SUP */
> @@ -315,55 +316,58 @@ static int prism2_fwapply(const struct ihex_binrec *rfptr,
>  	if (result) {
>  		netdev_err(wlandev->netdev,
>  			   "Failed to read the data exiting.\n");
> -		return 1;
> +		goto out;

After this should be goto free_srecs not goto out.  I don't know that
it matters...

>  	}
>  
>  	result = validate_identity();
> -
>  	if (result) {
>  		netdev_err(wlandev->netdev, "Incompatible firmware image.\n");
> -		return 1;
> +		goto out;
>  	}
>  
>  	if (startaddr == 0x00000000) {
>  		netdev_err(wlandev->netdev,
>  			   "Can't RAM download a Flash image!\n");
> -		return 1;
> +		result = 1;
> +		goto out;
>  	}
>  
>  	/* Make the image chunks */
>  	result = mkimage(fchunk, &nfchunks);
>  	if (result) {
>  		netdev_err(wlandev->netdev, "Failed to make image chunk.\n");
> -		return 1;
> +		goto free_chunks;

This works, but really mkimage() should clean up it's own allocations
on failure.  Otherwise it is a layering violation.

The rest of the patch is fine.

regards,
dan carpenter

  reply	other threads:[~2016-04-26 11:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-24 16:40 [PATCH] Staging: wlan-ng: memory allocated inside mkimage() is not freed if subsequent calls fails Claudiu Beznea
2016-04-26 11:46 ` Dan Carpenter [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-04-02 20:22 Claudiu Beznea

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=20160426100032.GL4298@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=claudiu.beznea@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.