]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
V4L/DVB (13190): em28xx: fix panic that can occur when starting audio streaming
authorDevin Heitmueller <dheitmueller@kernellabs.com>
Thu, 15 Oct 2009 04:14:34 +0000 (01:14 -0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Dec 2009 19:17:13 +0000 (11:17 -0800)
commit 96fbf771d86a90ff006bc62ca4d4de6474b3de31 upstream.

Because the counters were not reset when starting up streaming, they would
be reused from the previous run.  This can result in cases such that when the
second instance of streaming starts up, the "cnt" variable in
em28xx_audio_isocirq() can end up being negative, resulting in attempting to
write to memory before the start of runtime->dma_area (as well as having a
negative number of bytes to copy).

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/media/video/em28xx/em28xx-audio.c

index ac3292d7646cb71cc3eb2f229e9b81f352c5c769..95f77b68d49e12d076469a71d4ed2c42449cc2ab 100644 (file)
@@ -365,6 +365,11 @@ static int snd_em28xx_hw_capture_free(struct snd_pcm_substream *substream)
 
 static int snd_em28xx_prepare(struct snd_pcm_substream *substream)
 {
+       struct em28xx *dev = snd_pcm_substream_chip(substream);
+
+       dev->adev.hwptr_done_capture = 0;
+       dev->adev.capture_transfer_done = 0;
+
        return 0;
 }