From: Gerd Knorr - Fix a memory leak in video-buf.c - Small update for the video-buf-dvb.c module. Signed-off-by: Gerd Knorr Signed-off-by: Andrew Morton --- 25-akpm/drivers/media/video/video-buf-dvb.c | 11 +++++++---- 25-akpm/drivers/media/video/video-buf.c | 4 +++- 25-akpm/include/media/video-buf-dvb.h | 4 +++- 3 files changed, 13 insertions(+), 6 deletions(-) diff -puN drivers/media/video/video-buf.c~v4l-video-buf-update drivers/media/video/video-buf.c --- 25/drivers/media/video/video-buf.c~v4l-video-buf-update 2005-01-22 18:44:35.997752576 -0800 +++ 25-akpm/drivers/media/video/video-buf.c 2005-01-22 18:44:36.005751360 -0800 @@ -1,5 +1,5 @@ /* - * $Id: video-buf.c,v 1.15 2004/11/07 14:45:00 kraxel Exp $ + * $Id: video-buf.c,v 1.17 2004/12/10 12:33:40 kraxel Exp $ * * generic helper functions for video4linux capture buffers, to handle * memory management and PCI DMA. Right now bttv + saa7134 use it. @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -892,6 +893,7 @@ void videobuf_read_stop(struct videobuf_ int i; videobuf_queue_cancel(q); + videobuf_mmap_free(q); INIT_LIST_HEAD(&q->stream); for (i = 0; i < VIDEO_MAX_FRAME; i++) { if (NULL == q->bufs[i]) diff -puN drivers/media/video/video-buf-dvb.c~v4l-video-buf-update drivers/media/video/video-buf-dvb.c --- 25/drivers/media/video/video-buf-dvb.c~v4l-video-buf-update 2005-01-22 18:44:35.998752424 -0800 +++ 25-akpm/drivers/media/video/video-buf-dvb.c 2005-01-22 18:44:36.006751208 -0800 @@ -1,5 +1,5 @@ /* - * $Id: video-buf-dvb.c,v 1.5 2004/11/07 13:17:15 kraxel Exp $ + * $Id: video-buf-dvb.c,v 1.7 2004/12/09 12:51:35 kraxel Exp $ * * some helper function for simple DVB cards which simply DMA the * complete transport stream and let the computer sort everything else @@ -35,7 +35,7 @@ module_param(debug, int, 0644); MODULE_PARM_DESC(debug,"enable debug messages"); #define dprintk(fmt, arg...) if (debug) \ - printk(KERN_DEBUG "%s/dvb: " fmt, dvb->name, ## arg) + printk(KERN_DEBUG "%s/dvb: " fmt, dvb->name , ## arg) /* ------------------------------------------------------------------ */ @@ -134,19 +134,22 @@ static int videobuf_dvb_stop_feed(struct /* ------------------------------------------------------------------ */ -int videobuf_dvb_register(struct videobuf_dvb *dvb) +int videobuf_dvb_register(struct videobuf_dvb *dvb, + struct module *module, + void *adapter_priv) { int result; init_MUTEX(&dvb->lock); /* register adapter */ - result = dvb_register_adapter(&dvb->adapter, dvb->name, THIS_MODULE); + result = dvb_register_adapter(&dvb->adapter, dvb->name, module); if (result < 0) { printk(KERN_WARNING "%s: dvb_register_adapter failed (errno = %d)\n", dvb->name, result); goto fail_adapter; } + dvb->adapter->priv = adapter_priv; /* register frontend */ result = dvb_register_frontend(dvb->adapter, dvb->frontend); diff -puN include/media/video-buf-dvb.h~v4l-video-buf-update include/media/video-buf-dvb.h --- 25/include/media/video-buf-dvb.h~v4l-video-buf-update 2005-01-22 18:44:35.999752272 -0800 +++ 25-akpm/include/media/video-buf-dvb.h 2005-01-22 18:44:36.006751208 -0800 @@ -24,7 +24,9 @@ struct videobuf_dvb { struct dvb_net net; }; -int videobuf_dvb_register(struct videobuf_dvb *dvb); +int videobuf_dvb_register(struct videobuf_dvb *dvb, + struct module *module, + void *adapter_priv); void videobuf_dvb_unregister(struct videobuf_dvb *dvb); /* _