Loading sound/usb/stream.c +14 −17 Original line number Diff line number Diff line Loading @@ -28,6 +28,14 @@ #include "power.h" #include "media.h" static void audioformat_free(struct audioformat *fp) { list_del(&fp->list); /* unlink for avoiding double-free */ kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); } /* * free a substream */ Loading @@ -37,11 +45,8 @@ static void free_substream(struct snd_usb_substream *subs) if (!subs->num_formats) return; /* not initialized */ list_for_each_entry_safe(fp, n, &subs->fmt_list, list) { kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); } list_for_each_entry_safe(fp, n, &subs->fmt_list, list) audioformat_free(fp); kfree(subs->rate_list.list); kfree(subs->str_pd); snd_media_stream_delete(subs); Loading Loading @@ -832,8 +837,7 @@ snd_usb_get_audioformat_uac12(struct snd_usb_audio *chip, /* ok, let's parse further... */ if (snd_usb_parse_audio_format(chip, fp, format, fmt, stream) < 0) { kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } Loading Loading @@ -1043,9 +1047,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, pd = kzalloc(sizeof(*pd), GFP_KERNEL); if (!pd) { kfree(fp->chmap); kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } pd->pd_id = (stream == SNDRV_PCM_STREAM_PLAYBACK) ? Loading @@ -1064,9 +1066,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, /* ok, let's parse further... */ if (snd_usb_parse_audio_format_v3(chip, fp, as, stream) < 0) { kfree(pd); kfree(fp->chmap); kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } } Loading Loading @@ -1185,11 +1185,8 @@ int snd_usb_parse_audio_interface(struct snd_usb_audio *chip, int iface_no) err = snd_usb_add_audio_stream(chip, stream, fp); if (err < 0) { list_del(&fp->list); /* unlink for avoiding double-free */ audioformat_free(fp); kfree(pd); kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); return err; } /* try to set the interface... */ Loading Loading
sound/usb/stream.c +14 −17 Original line number Diff line number Diff line Loading @@ -28,6 +28,14 @@ #include "power.h" #include "media.h" static void audioformat_free(struct audioformat *fp) { list_del(&fp->list); /* unlink for avoiding double-free */ kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); } /* * free a substream */ Loading @@ -37,11 +45,8 @@ static void free_substream(struct snd_usb_substream *subs) if (!subs->num_formats) return; /* not initialized */ list_for_each_entry_safe(fp, n, &subs->fmt_list, list) { kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); } list_for_each_entry_safe(fp, n, &subs->fmt_list, list) audioformat_free(fp); kfree(subs->rate_list.list); kfree(subs->str_pd); snd_media_stream_delete(subs); Loading Loading @@ -832,8 +837,7 @@ snd_usb_get_audioformat_uac12(struct snd_usb_audio *chip, /* ok, let's parse further... */ if (snd_usb_parse_audio_format(chip, fp, format, fmt, stream) < 0) { kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } Loading Loading @@ -1043,9 +1047,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, pd = kzalloc(sizeof(*pd), GFP_KERNEL); if (!pd) { kfree(fp->chmap); kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } pd->pd_id = (stream == SNDRV_PCM_STREAM_PLAYBACK) ? Loading @@ -1064,9 +1066,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, /* ok, let's parse further... */ if (snd_usb_parse_audio_format_v3(chip, fp, as, stream) < 0) { kfree(pd); kfree(fp->chmap); kfree(fp->rate_table); kfree(fp); audioformat_free(fp); return NULL; } } Loading Loading @@ -1185,11 +1185,8 @@ int snd_usb_parse_audio_interface(struct snd_usb_audio *chip, int iface_no) err = snd_usb_add_audio_stream(chip, stream, fp); if (err < 0) { list_del(&fp->list); /* unlink for avoiding double-free */ audioformat_free(fp); kfree(pd); kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); return err; } /* try to set the interface... */ Loading