[alsa-devel] [PATCH v2] ALSA: dice: fix memory leak when unplugging

Takashi Iwai tiwai at suse.de
Mon Mar 28 09:33:39 CEST 2016


On Mon, 28 Mar 2016 01:29:32 +0200,
Takashi Sakamoto wrote:
> 
> When sound card is going to be released, dice private data is
> also released. Then all of data should be released. However,
> stream data is not released. This causes memory leak when
> unplugging dice unit.
> 
> This commit fixes the bug.
> 
> Fixes: 4bdc495c87b3('ALSA: dice: handle several PCM substreams when any isochronous streams are available')
> Signed-off-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>

Applied, thanks.


Takashi

> ---
>  sound/firewire/dice/dice-stream.c | 14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/sound/firewire/dice/dice-stream.c b/sound/firewire/dice/dice-stream.c
> index 845d5e5..ec4db3a 100644
> --- a/sound/firewire/dice/dice-stream.c
> +++ b/sound/firewire/dice/dice-stream.c
> @@ -446,18 +446,12 @@ end:
>  
>  void snd_dice_stream_destroy_duplex(struct snd_dice *dice)
>  {
> -	struct reg_params tx_params, rx_params;
> -
> -	snd_dice_transaction_clear_enable(dice);
> +	unsigned int i;
>  
> -	if (get_register_params(dice, &tx_params, &rx_params) == 0) {
> -		stop_streams(dice, AMDTP_IN_STREAM, &tx_params);
> -		stop_streams(dice, AMDTP_OUT_STREAM, &rx_params);
> +	for (i = 0; i < MAX_STREAMS; i++) {
> +		destroy_stream(dice, AMDTP_IN_STREAM, i);
> +		destroy_stream(dice, AMDTP_OUT_STREAM, i);
>  	}
> -
> -	release_resources(dice);
> -
> -	dice->substreams_counter = 0;
>  }
>  
>  void snd_dice_stream_update_duplex(struct snd_dice *dice)
> -- 
> 2.7.3
> 


More information about the Alsa-devel mailing list