Commit cbb7eb20 authored by Markus Elfring's avatar Markus Elfring Committed by Takashi Iwai

ALSA: ctxfi: Use common error handling code in two functions

Add jump targets so that a bit of exception handling can be better reused
at the end of these functions.

This issue was detected by using the Coccinelle software.
Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 2cded8c8
...@@ -140,27 +140,28 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream) ...@@ -140,27 +140,28 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream)
err = snd_pcm_hw_constraint_integer(runtime, err = snd_pcm_hw_constraint_integer(runtime,
SNDRV_PCM_HW_PARAM_PERIODS); SNDRV_PCM_HW_PARAM_PERIODS);
if (err < 0) { if (err < 0)
kfree(apcm); goto free_pcm;
return err;
}
err = snd_pcm_hw_constraint_minmax(runtime, err = snd_pcm_hw_constraint_minmax(runtime,
SNDRV_PCM_HW_PARAM_BUFFER_BYTES, SNDRV_PCM_HW_PARAM_BUFFER_BYTES,
1024, UINT_MAX); 1024, UINT_MAX);
if (err < 0) { if (err < 0)
kfree(apcm); goto free_pcm;
return err;
}
apcm->timer = ct_timer_instance_new(atc->timer, apcm); apcm->timer = ct_timer_instance_new(atc->timer, apcm);
if (!apcm->timer) { if (!apcm->timer) {
kfree(apcm); err = -ENOMEM;
return -ENOMEM; goto free_pcm;
} }
runtime->private_data = apcm; runtime->private_data = apcm;
runtime->private_free = ct_atc_pcm_free_substream; runtime->private_free = ct_atc_pcm_free_substream;
return 0; return 0;
free_pcm:
kfree(apcm);
return err;
} }
static int ct_pcm_playback_close(struct snd_pcm_substream *substream) static int ct_pcm_playback_close(struct snd_pcm_substream *substream)
...@@ -286,27 +287,28 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream) ...@@ -286,27 +287,28 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream)
err = snd_pcm_hw_constraint_integer(runtime, err = snd_pcm_hw_constraint_integer(runtime,
SNDRV_PCM_HW_PARAM_PERIODS); SNDRV_PCM_HW_PARAM_PERIODS);
if (err < 0) { if (err < 0)
kfree(apcm); goto free_pcm;
return err;
}
err = snd_pcm_hw_constraint_minmax(runtime, err = snd_pcm_hw_constraint_minmax(runtime,
SNDRV_PCM_HW_PARAM_BUFFER_BYTES, SNDRV_PCM_HW_PARAM_BUFFER_BYTES,
1024, UINT_MAX); 1024, UINT_MAX);
if (err < 0) { if (err < 0)
kfree(apcm); goto free_pcm;
return err;
}
apcm->timer = ct_timer_instance_new(atc->timer, apcm); apcm->timer = ct_timer_instance_new(atc->timer, apcm);
if (!apcm->timer) { if (!apcm->timer) {
kfree(apcm); err = -ENOMEM;
return -ENOMEM; goto free_pcm;
} }
runtime->private_data = apcm; runtime->private_data = apcm;
runtime->private_free = ct_atc_pcm_free_substream; runtime->private_free = ct_atc_pcm_free_substream;
return 0; return 0;
free_pcm:
kfree(apcm);
return err;
} }
static int ct_pcm_capture_close(struct snd_pcm_substream *substream) static int ct_pcm_capture_close(struct snd_pcm_substream *substream)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment