Hi Well, I must confess, I'm surprised:-) It looks like you're right. This leak, if indeed there is one, has been there since the very first version of soc-camera. I've spent some time looking at the code and so far I don't find an explanation for the missing videobuf_mmap_free() call. I'll have another look and, unless I find an explanation, why it's not needed, I'll make a patch. Also keep in mind, that this bug is only relevant for videobuf(1) drivers, which anyway have to be converted to videobuf2;-) Thanks Guennadi On Wed, 7 Nov 2012, �~M�~^�V wrote: > 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/ --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- 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