Dear Guennadi I'm sure it's a bug.In linux-2.6.x, we call open() will allocate a struct soc_camera_file which contains struct videobuf_queue;then usr will call request_buffer, soc_camera module will call videobuf_alloc_vb(q) which will be installed in q->bufs[i]. My question is how to free q->bufs[i] which is allocated from vb = kzalloc(size + sizeof(*mem), GFP_KERNEL) if we use videobuf-dma-contig memory model? videobuf_mmap_free()->kfree(q->bufs[i]) should call at every call close();we can't call kfree(q->bufs[i]) at q->ops->buf_release which is called in stream_off(), because q->bufs[i] reserve struct videobuf_mapping, unmap() will can't free videobuf which is used to store video data. Also can't call videobuf_mmap_free()->kfree(q->bufs[i]) at last close(), because in linux-2.6.x once open() allocates a videobuf_queue. In linux-3.x.x, we should call videobuf_mmap_free()->kfree(q->bufs[i]) only once at module remove callbcak function. You say, videobuf mmap allocations will be freed automatically. I want to known soc_camera module how to free q->bufs[i] automatically. If is there no bug in soc camera module , i'm sure all device driver use soc camera module have bugs, such as sh_mobile_ceu_caera.c, mx1_caera.c, mx3_caera.c etc. all of them donn't call videobuf_mmap_free()->kfree(q->bufs[i]). Your reply will be higly appreciated! ------------------ 原始邮件 ------------------ 发件人: "Guennadi Liakhovetski"<g.liakhovetski@xxxxxx>; 发送时间: 2012年11月6日(星期二) 晚上7:30 收件人: "再回首"<308123027@xxxxxx>; 抄送: "linux-media"<linux-media@xxxxxxxxxxxxxxx>; 主题: Re: soc camera driver module may case memory leak Hi On Mon, 5 Nov 2012, ~F~M ~[~^ ~V wrote: > Dear sir: > why not call "videobuf_mmap_free",when device close call "soc_camera_close" in linux-2.6.x; I haven't found any version, where this has been done. I don't think this is needed, because videobuf mmap allocations will be freed automatically upon the last close(). Please, dismiss your bugzilla entry. Thanks Guennadi > do the same in linux-3.x.x? > video capture flow: > 1)open > 2)set fmt > 3)request buffer-->__videobuf_mmap_setup-->videobuf_alloc_vb(q) > 4)mmap > 5)enqueue, dequeue > 6)unmap > 7)close--->soc_camera_close-->?should call:videobuf_mmap_free > NOTE: > I have reviewed all the code, found:soc_camera_driver device driver coders has no way(callback function) to call videobuf_mmap_free; it will case memory leak.N r y b X ǧv ^ ){.n + { bj) w*jg ݢj/ z ޖ 2 ޙ & )ߡ a G h j:+v w ٥ --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/��.n��������+%����;��w��{.n�����{��g����^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�