Hi Dave,
On 2012년 12월 18일 15:30, Dave Airlie wrote:
On Thu, Sep 27, 2012 at 4:30 PM, Seung-Woo Kim sw0312.kim@samsung.com wrote:
Increasing ref counts of both dma-buf and gem for imported dma-buf come from gem makes memory leak. release function of dma-buf cannot be called because f_count of dma-buf increased by importing gem and gem ref count cannot be decrease because of exported dma-buf.
So I add dma_buf_put() for imported gem come from its own gem into each drivers having prime_import and prime_export capabilities. With this, only gem ref count is increased if importing gem exported from gem of same driver.
Okay its taken me a while to circle around and get back to this, but yes I admit this is needed, but I hate implementing it like this
But I think I'll push it and work out a cleaner solution, I should also go back and look at the older patches.
I want to also report some strange thing in dma-buf prime export.
In drm_prime_handle_to_fd_ioctl(), flags is cleared to only support DRM_CLOEXEC but in gem_prime_export() callbacks of each driver, it uses 0600 as flags for dma_buf_export() like following.
return dma_buf_export(obj, &i915_dmabuf_ops, obj->base.size, 0600);
Best Regards, - Seung-Woo Kim
Dave.