media: cx23885: Fix snd_card_free call on null card pointer
authorColin Ian King <colin.king@canonical.com>
Wed, 4 Aug 2021 08:50:10 +0000 (10:50 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 30 Sep 2021 08:08:00 +0000 (10:08 +0200)
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: 9e44d63246a9 ("[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>
drivers/media/pci/cx23885/cx23885-alsa.c

index ab14d35..25dc8d4 100644 (file)
@@ -550,7 +550,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev)
                           SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
                        THIS_MODULE, sizeof(struct cx23885_audio_dev), &card);
        if (err < 0)
-               goto error;
+               goto error_msg;
 
        chip = (struct cx23885_audio_dev *) card->private_data;
        chip->dev = dev;
@@ -576,6 +576,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev)
 
 error:
        snd_card_free(card);
+error_msg:
        pr_err("%s(): Failed to register analog audio adapter\n",
               __func__);