summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorDikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>2025-12-29 12:01:22 +0530
committerSasha Levin <sashal@kernel.org>2026-03-04 07:21:19 -0500
commitd4457f23ac0130240053a34be663f0fade3bb371 (patch)
tree3bb3265c6be8459421c7cccf084a55b24f9e4634 /drivers/media
parent7ccc1e1c06ee1671bec4e365cc6a86f305266538 (diff)
downloadlinux-d4457f23ac0130240053a34be663f0fade3bb371.tar.gz
linux-d4457f23ac0130240053a34be663f0fade3bb371.tar.bz2
linux-d4457f23ac0130240053a34be663f0fade3bb371.zip
media: iris: gen1: Destroy internal buffers after FW releases
[ Upstream commit 1dabf00ee206eceb0f08a1fe5d1ce635f9064338 ] After the firmware releases internal buffers, the driver was not destroying them. This left stale allocations that were no longer used, especially across resolution changes where new buffers are allocated per the updated requirements. As a result, memory was wasted until session close. Destroy internal buffers once the release response is received from the firmware. Fixes: 73702f45db81 ("media: iris: allocate, initialize and queue internal buffers") Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com> Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com> Cc: stable@vger.kernel.org Signed-off-by: Bryan O'Donoghue <bod@kernel.org> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
index 1c107daca9e8..11815f6f5bac 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
@@ -441,6 +441,8 @@ static int iris_hfi_gen1_session_unset_buffers(struct iris_inst *inst, struct ir
goto exit;
ret = iris_wait_for_session_response(inst, false);
+ if (!ret)
+ ret = iris_destroy_internal_buffer(inst, buf);
exit:
kfree(pkt);