[alsa-devel] [PATCH] ALSA: hda - check NULL pointer when creating SPDIF PCM switch
Takashi Iwai
tiwai at suse.de
Thu Mar 7 09:16:35 CET 2013
At Thu, 7 Mar 2013 14:11:05 -0500,
mengdong.lin at intel.com wrote:
>
> From: Mengdong Lin <mengdong.lin at intel.com>
>
> If the new control cannot be created, this function will return to avoid
> snd_hda_ctl_add dereferencing a NULL control pointer.
>
> Signed-off-by: Mengdong Lin <mengdong.lin at intel.com>
Applied.
Another option would be to change snd_hda_ctl_add() to check NULL by
itself like snd_ctl_add(), but here is the only place where missing
the NULL check, so I don't think it's worth to change more.
thanks,
Takashi
>
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index 3dc6566..97c68dd 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -3433,11 +3433,16 @@ static struct snd_kcontrol_new spdif_share_sw = {
> int snd_hda_create_spdif_share_sw(struct hda_codec *codec,
> struct hda_multi_out *mout)
> {
> + struct snd_kcontrol *kctl;
> +
> if (!mout->dig_out_nid)
> return 0;
> +
> + kctl = snd_ctl_new1(&spdif_share_sw, mout);
> + if (!kctl)
> + return -ENOMEM;
> /* ATTENTION: here mout is passed as private_data, instead of codec */
> - return snd_hda_ctl_add(codec, mout->dig_out_nid,
> - snd_ctl_new1(&spdif_share_sw, mout));
> + return snd_hda_ctl_add(codec, mout->dig_out_nid, kctl);
> }
> EXPORT_SYMBOL_HDA(snd_hda_create_spdif_share_sw);
>
> --
> 1.7.10.4
>
More information about the Alsa-devel
mailing list