lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250704-iris-video-encoder-v1-4-b6ce24e273cf@quicinc.com>
Date: Fri, 4 Jul 2025 13:23:04 +0530
From: Dikshita Agarwal <quic_dikshita@...cinc.com>
To: Vikash Garodia <quic_vgarodia@...cinc.com>,
        Abhinav Kumar
	<abhinav.kumar@...ux.dev>,
        Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
        Mauro Carvalho Chehab <mchehab@...nel.org>,
        Hans Verkuil
	<hverkuil@...all.nl>,
        Stefan Schmidt <stefan.schmidt@...aro.org>,
        "Vedang
 Nagar" <quic_vnagar@...cinc.com>
CC: <linux-media@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
        <linux-kernel@...r.kernel.org>,
        Dikshita Agarwal <quic_dikshita@...cinc.com>
Subject: [PATCH 04/25] media: iris: Fix buffer timestamp handling

The internal driver logic operates with timestamps in microseconds
while the buffer timestamp received by vb2 is in nanosecond, this
mismatch in units causing issue in buffer handling.
Update the timestamp handling logic by converting the buffer timestamp
to microseconds before using it internally in driver for all the
timestamp assignments, comparisons, and metadata handling.

Fixes: 17f2a485ca67 ("media: iris: implement vb2 ops for buf_queue and firmware response")
Signed-off-by: Dikshita Agarwal <quic_dikshita@...cinc.com>
---
 drivers/media/platform/qcom/iris/iris_buffer.c | 6 +++---
 drivers/media/platform/qcom/iris/iris_vdec.c   | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media/platform/qcom/iris/iris_buffer.c
index 9f664c241149362d44d3a8fa65e2266f9c2e80e0..809ce77744f996c23dc07ef9ecb3e8e92b709850 100644
--- a/drivers/media/platform/qcom/iris/iris_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_buffer.c
@@ -579,14 +579,14 @@ iris_helper_find_buf(struct iris_inst *inst, u32 type, u32 idx)
 		return v4l2_m2m_dst_buf_remove_by_idx(m2m_ctx, idx);
 }
 
-static void iris_get_ts_metadata(struct iris_inst *inst, u64 timestamp_ns,
+static void iris_get_ts_metadata(struct iris_inst *inst, u64 timestamp_us,
 				 struct vb2_v4l2_buffer *vbuf)
 {
 	u32 mask = V4L2_BUF_FLAG_TIMECODE | V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
 	u32 i;
 
 	for (i = 0; i < ARRAY_SIZE(inst->tss); ++i) {
-		if (inst->tss[i].ts_ns != timestamp_ns)
+		if (inst->tss[i].ts_us != timestamp_us)
 			continue;
 
 		vbuf->flags &= ~mask;
@@ -653,7 +653,7 @@ int iris_vb2_buffer_done(struct iris_inst *inst, struct iris_buffer *buf)
 	}
 
 	state = VB2_BUF_STATE_DONE;
-	vb2->timestamp = buf->timestamp;
+	vb2->timestamp = buf->timestamp * NSEC_PER_USEC;
 	v4l2_m2m_buf_done(vbuf, state);
 
 	return 0;
diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/platform/qcom/iris/iris_vdec.c
index d670b51c5839d1fad54d34f373cf71d5f3973a96..05340e201e6538b9599387cdd57814005b904e76 100644
--- a/drivers/media/platform/qcom/iris/iris_vdec.c
+++ b/drivers/media/platform/qcom/iris/iris_vdec.c
@@ -561,6 +561,7 @@ iris_vdec_vb2_buffer_to_driver(struct vb2_buffer *vb2, struct iris_buffer *buf)
 	buf->data_size = vb2->planes[0].bytesused - vb2->planes[0].data_offset;
 	buf->flags = vbuf->flags;
 	buf->timestamp = vb2->timestamp;
+	do_div(buf->timestamp, NSEC_PER_USEC);
 	buf->attr = 0;
 
 	return 0;

-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ