This is against the em28xx driver from mcentral.de, which leaked 3x16KiB chunks of kernel mem for every iteration. Iterations for me were triggered by channel changes in VLC. diff -Naur em28xx-new-cd98ca2bc3cd/em28xx-audio.c em28xx-new-1/em28xx-audio.c --- em28xx-new-cd98ca2bc3cd/em28xx-audio.c 2009-01-05 14:45:58.000000000 +0000 +++ em28xx-new-1/em28xx-audio.c 2009-01-09 16:39:34.000000000 +0000 @@ -425,15 +425,17 @@ return; } -static int em28xx_isoc_audio_deinit(struct em28xx *dev) +static void em28xx_isoc_audio_deinit(struct em28xx *dev) { int i; for (i = 0; i < EM28XX_AUDIO_BUFS; i++) { usb_kill_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; } static int em28xx_init_audio_isoc(struct em28xx *dev)