Commit 91c6d55b authored by Dikshita Agarwal's avatar Dikshita Agarwal Committed by Hans Verkuil
Browse files

media: iris: Fix buffer preparation failure during resolution change



When the resolution changes, the driver internally updates the width and
height, but the client continue to queue buffers with the older
resolution until the last flag is received. This results in a mismatch
when the buffers are prepared, causing failure due to outdated size.

Introduce a check to prevent size validation during buffer preparation
if a resolution reconfiguration is in progress, to handle this.

Cc: stable@vger.kernel.org
Fixes: 17f2a485 ("media: iris: implement vb2 ops for buf_queue and firmware response")
Reviewed-by: default avatarVikash Garodia <quic_vgarodia@quicinc.com>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK
Signed-off-by: default avatarDikshita Agarwal <quic_dikshita@quicinc.com>
Tested-by: Vikash Garodia <quic_vgarodia@quicinc.com> # on sa8775p-ride
Signed-off-by: default avatarBryan O'Donoghue <bod@kernel.org>
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
parent 9bf58db1
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -259,13 +259,14 @@ int iris_vb2_buf_prepare(struct vb2_buffer *vb)
			return -EINVAL;
	}

	if (!(inst->sub_state & IRIS_INST_SUB_DRC)) {
		if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
		    vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_OUTPUT))
			return -EINVAL;
		if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE &&
		    vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_INPUT))
			return -EINVAL;

	}
	return 0;
}