mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
media: go7007: fix a miss of snd_card_free
commit9453264ef5
upstream. go7007_snd_init() misses a snd_card_free() in an error path. Add the missed call to fix it. Signed-off-by: Chuhong Yuan <hslester96@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> [Salvatore Bonaccorso: Adjust context for backport to versions which do not containc0decac19d
("media: use strscpy() instead of strlcpy()") andba78170ef1
("media: go7007: Fix misuse of strscpy")] Signed-off-by: Salvatore Bonaccorso <carnil@debian.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
823617d0cc
commit
033e86f473
1 changed files with 17 additions and 18 deletions
|
@ -243,22 +243,18 @@ int go7007_snd_init(struct go7007 *go)
|
|||
gosnd->capturing = 0;
|
||||
ret = snd_card_new(go->dev, index[dev], id[dev], THIS_MODULE, 0,
|
||||
&gosnd->card);
|
||||
if (ret < 0) {
|
||||
kfree(gosnd);
|
||||
return ret;
|
||||
}
|
||||
if (ret < 0)
|
||||
goto free_snd;
|
||||
|
||||
ret = snd_device_new(gosnd->card, SNDRV_DEV_LOWLEVEL, go,
|
||||
&go7007_snd_device_ops);
|
||||
if (ret < 0) {
|
||||
kfree(gosnd);
|
||||
return ret;
|
||||
}
|
||||
if (ret < 0)
|
||||
goto free_card;
|
||||
|
||||
ret = snd_pcm_new(gosnd->card, "go7007", 0, 0, 1, &gosnd->pcm);
|
||||
if (ret < 0) {
|
||||
snd_card_free(gosnd->card);
|
||||
kfree(gosnd);
|
||||
return ret;
|
||||
}
|
||||
if (ret < 0)
|
||||
goto free_card;
|
||||
|
||||
strlcpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver));
|
||||
strlcpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver));
|
||||
strlcpy(gosnd->card->longname, gosnd->card->shortname,
|
||||
|
@ -269,11 +265,8 @@ int go7007_snd_init(struct go7007 *go)
|
|||
&go7007_snd_capture_ops);
|
||||
|
||||
ret = snd_card_register(gosnd->card);
|
||||
if (ret < 0) {
|
||||
snd_card_free(gosnd->card);
|
||||
kfree(gosnd);
|
||||
return ret;
|
||||
}
|
||||
if (ret < 0)
|
||||
goto free_card;
|
||||
|
||||
gosnd->substream = NULL;
|
||||
go->snd_context = gosnd;
|
||||
|
@ -281,6 +274,12 @@ int go7007_snd_init(struct go7007 *go)
|
|||
++dev;
|
||||
|
||||
return 0;
|
||||
|
||||
free_card:
|
||||
snd_card_free(gosnd->card);
|
||||
free_snd:
|
||||
kfree(gosnd);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(go7007_snd_init);
|
||||
|
||||
|
|
Loading…
Reference in a new issue