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

Takashi Sakamoto o-takashi at sakamocchi.jp
Mon Mar 28 01:25:49 CEST 2016


On Mar 28 2016 08:23, 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')

Oops. I forgot to add 'Signed-off-by'. Please drop this...

> ---
>  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)
> 



More information about the Alsa-devel mailing list