X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fmedia%2Fusb%2Fusbtv%2Fusbtv-audio.c;fp=kernel%2Fdrivers%2Fmedia%2Fusb%2Fusbtv%2Fusbtv-audio.c;h=5dab02432e821af3d4750b923f55f0fe0cc20aa6;hb=52f993b8e89487ec9ee15a7fb4979e0f09a45b27;hp=78c12d22dfbb923d5c928bf42b0ed2a3a717ca2a;hpb=c189ccac5702322ed843fe17057035b7222a59b6;p=kvmfornfv.git diff --git a/kernel/drivers/media/usb/usbtv/usbtv-audio.c b/kernel/drivers/media/usb/usbtv/usbtv-audio.c index 78c12d22d..5dab02432 100644 --- a/kernel/drivers/media/usb/usbtv/usbtv-audio.c +++ b/kernel/drivers/media/usb/usbtv/usbtv-audio.c @@ -278,6 +278,9 @@ static void snd_usbtv_trigger(struct work_struct *work) { struct usbtv *chip = container_of(work, struct usbtv, snd_trigger); + if (!chip->snd) + return; + if (atomic_read(&chip->snd_stream)) usbtv_audio_start(chip); else @@ -378,6 +381,8 @@ err: void usbtv_audio_free(struct usbtv *usbtv) { + cancel_work_sync(&usbtv->snd_trigger); + if (usbtv->snd && usbtv->udev) { snd_card_free(usbtv->snd); usbtv->snd = NULL;