em28xx: Fix audio URB transfer buffer memory leak and race condition/corruption of capture pointer From: Robert Krakora <rob.krakora@xxxxxxxxxxxxxxxxxxxxx> Fix audio URB transfer buffer memory leak and race condition/corruption of capture pointer Leak fix kindly contributed by Pádraig Brady. Priority: normal Signed-off-by: Robert Krakora <rob.krakora@xxxxxxxxxxxxxxxxxxxxx> diff -r 7981bdd4e25a linux/drivers/media/video/em28xx/em28xx-audio.c --- a/linux/drivers/media/video/em28xx/em28xx-audio.c Mon Jan 12 00:18:04 2009 +0000 +++ b/linux/drivers/media/video/em28xx/em28xx-audio.c Thu Jan 15 17:27:27 2009 -0500 @@ -66,6 +66,9 @@ usb_unlink_urb(dev->adev.urb[i]); usb_free_urb(dev->adev.urb[i]); dev->adev.urb[i] = NULL; + + kfree(dev->adev.transfer_buffer[i]); + dev->adev.transfer_buffer[i] = NULL; } return 0; @@ -458,11 +461,15 @@ *substream) #endif { + unsigned long flags; + struct em28xx *dev; - snd_pcm_uframes_t hwptr_done; + dev = snd_pcm_substream_chip(substream); + spin_lock_irqsave(&dev->adev.slock, flags); hwptr_done = dev->adev.hwptr_done_capture; + spin_unlock_irqrestore(&dev->adev.slock, flags); return hwptr_done; } -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html