mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
video: rockchip: rga3: destroy internal_buffer when user exits
When a user imports the same buffer from multiple threads, relying only on put to reduce the reference count after the process exits will lead to memory leaks. Change-Id: I22e48eb89d23d0d1bc3066048235f1d58ba93511 Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
This commit is contained in:
@@ -840,6 +840,11 @@ static int rga_mm_handle_remove(int id, void *ptr, void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rga_mm_buffer_destroy(struct rga_internal_buffer *buffer)
|
||||
{
|
||||
rga_mm_kref_release_buffer(&buffer->refcount);
|
||||
}
|
||||
|
||||
static struct rga_internal_buffer *
|
||||
rga_mm_lookup_external(struct rga_mm *mm_session,
|
||||
struct rga_external_buffer *external_buffer,
|
||||
@@ -2142,9 +2147,9 @@ int rga_mm_session_release_buffer(struct rga_session *session)
|
||||
|
||||
idr_for_each_entry(&mm->memory_idr, buffer, i) {
|
||||
if (session == buffer->session) {
|
||||
pr_err("[tgid:%d] Decrement the reference of handle[%d] when the user exits\n",
|
||||
pr_err("[tgid:%d] Destroy handle[%d] when the user exits\n",
|
||||
session->tgid, buffer->handle);
|
||||
kref_put(&buffer->refcount, rga_mm_kref_release_buffer);
|
||||
rga_mm_buffer_destroy(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user