media: cx23885: Fix snd_card_free call on null card pointer
[ Upstream commit7266dda2f1] Currently a call to snd_card_new that fails will set card with a NULL pointer, this causes a null pointer dereference on the error cleanup path when card it passed to snd_card_free. Fix this by adding a new error exit path that does not call snd_card_free and exiting via this new path. Addresses-Coverity: ("Explicit null dereference") Fixes:9e44d63246("[media] cx23885: Add ALSA support") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
388cebfa73
commit
c34bfe4204
@@ -550,7 +550,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev)
|
|||||||
SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
|
SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
|
||||||
THIS_MODULE, sizeof(struct cx23885_audio_dev), &card);
|
THIS_MODULE, sizeof(struct cx23885_audio_dev), &card);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto error;
|
goto error_msg;
|
||||||
|
|
||||||
chip = (struct cx23885_audio_dev *) card->private_data;
|
chip = (struct cx23885_audio_dev *) card->private_data;
|
||||||
chip->dev = dev;
|
chip->dev = dev;
|
||||||
@@ -576,6 +576,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev)
|
|||||||
|
|
||||||
error:
|
error:
|
||||||
snd_card_free(card);
|
snd_card_free(card);
|
||||||
|
error_msg:
|
||||||
pr_err("%s(): Failed to register analog audio adapter\n",
|
pr_err("%s(): Failed to register analog audio adapter\n",
|
||||||
__func__);
|
__func__);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user