lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.1007151052120.5310@axis700.grange>
Date:	Thu, 15 Jul 2010 10:53:13 +0200 (CEST)
From:	Guennadi Liakhovetski <g.liakhovetski@....de>
To:	Axel Lin <axel.lin@...il.com>
cc:	linux-kernel <linux-kernel@...r.kernel.org>,
	Liam Girdwood <lrg@...mlogic.co.uk>,
	Mark Brown <broonie@...nsource.wolfsonmicro.com>,
	Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.de>,
	Tejun Heo <tj@...nel.org>, alsa-devel@...a-project.org
Subject: Re: [PATCH v2 11/12] wm8978: fix a memory leak if another WM8978 is
 registered

On Thu, 15 Jul 2010, Axel Lin wrote:

> >>From e53ff15ee6843d6591509f9aeeb2fa1a0c1eccee Mon Sep 17 00:00:00 2001
> From: Axel Lin <axel.lin@...il.com>
> Date: Thu, 15 Jul 2010 16:33:20 +0800
> Subject: [PATCH] wm8978: fix a memory leak if a wm8978_register fail
> 
> There is a memory leak found if wm8978_register() fail.
> This patch moves the buffer allocate and release
> at the same level to prevent the memory leak.
> 
> Signed-off-by: Axel Lin <axel.lin@...il.com>

Thanks for the patch, Axel! Only compile-tested, so, here's 

Reviewed-by: Guennadi Liakhovetski <g.liakhovetski@....de>

Guennadi

> ---
>  sound/soc/codecs/wm8978.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/soc/codecs/wm8978.c b/sound/soc/codecs/wm8978.c
> index 51d5f43..8a1ad77 100644
> --- a/sound/soc/codecs/wm8978.c
> +++ b/sound/soc/codecs/wm8978.c
> @@ -1076,7 +1076,6 @@ static __devinit int wm8978_register(struct wm8978_priv *wm8978)
>  err_codec:
>  	snd_soc_unregister_codec(codec);
>  err:
> -	kfree(wm8978);
>  	return ret;
>  }
>  
> @@ -1085,13 +1084,13 @@ static __devexit void wm8978_unregister(struct wm8978_priv *wm8978)
>  	wm8978_set_bias_level(&wm8978->codec, SND_SOC_BIAS_OFF);
>  	snd_soc_unregister_dai(&wm8978_dai);
>  	snd_soc_unregister_codec(&wm8978->codec);
> -	kfree(wm8978);
>  	wm8978_codec = NULL;
>  }
>  
>  static __devinit int wm8978_i2c_probe(struct i2c_client *i2c,
>  				      const struct i2c_device_id *id)
>  {
> +	int ret;
>  	struct wm8978_priv *wm8978;
>  	struct snd_soc_codec *codec;
>  
> @@ -1107,13 +1106,18 @@ static __devinit int wm8978_i2c_probe(struct i2c_client *i2c,
>  
>  	codec->dev = &i2c->dev;
>  
> -	return wm8978_register(wm8978);
> +	ret = wm8978_register(wm8978);
> +	if (ret < 0)
> +		kfree(wm8978);
> +
> +	return ret;
>  }
>  
>  static __devexit int wm8978_i2c_remove(struct i2c_client *client)
>  {
>  	struct wm8978_priv *wm8978 = i2c_get_clientdata(client);
>  	wm8978_unregister(wm8978);
> +	kfree(wm8978);
>  	return 0;
>  }
>  
> -- 
> 1.5.4.3
> 
> 
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ