Re: [PATCH] media: venus: vdec: fix error state assignment for zero bytesused

From: Renjiang Han

Date: Sun Dec 07 2025 - 21:29:49 EST



On 12/7/2025 7:56 AM, Bryan O'Donoghue wrote:
On 26/11/2025 04:23, Renjiang Han wrote:
Previously, the check for zero bytesused and the assignment of error
state was performed outside the V4L2_BUF_FLAG_LAST branch, which could
incorrectly set the error state during drain operations.

This deserves more elaboration.

Instead of saying previously - talk about what it currently does and the precise circumstances under which it goes wrong. Try to make the description as plain and concise as possible.

This patch
moves the zero-bytesused check inside the 'else' branch, ensuring that
the error state is only set for non-EOS buffers with zero payload.

Additionally, the patch keeps the rest of the buffer state handling
logic unchanged, including handling of HFI_BUFFERFLAG_DATACORRUPT and
HFI_BUFFERFLAG_DROP_FRAME.

I don't think you need to tell us what's not touched in your commit log.

- Tell us what is wrong directly and plainly.
  Include how the bug you are fixing can come about i.e. under what
  circumstances we would see the error.

- Then tell us how you've fixed it.

- And include a Fixes: tag please.
  Since this is a bug fix you are proposing, it needs to be backported.
sure, thanks for your comments.


Signed-off-by: Renjiang Han <renjiang.han@xxxxxxxxxxxxxxxx>
---
This patch refines the error state assignment logic in the Venus vdec
driver for Qualcomm platforms. Specifically, it ensures that the buffer
state is only set to VB2_BUF_STATE_ERROR for non-EOS capture buffers
with zero bytesused, preventing false error reporting during drain
operations.
---
  drivers/media/platform/qcom/venus/vdec.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index 4a6641fdffcf79705893be58c7ec5cf485e2fab9..d0bd2d86a31f9a18cb68b08ba66affdf8fc5092d 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -1440,10 +1440,10 @@ static void vdec_buf_done(struct venus_inst *inst, unsigned int buf_type,
                  inst->drain_active = false;
                  inst->codec_state = VENUS_DEC_STATE_STOPPED;
              }
+        } else {
+            if (!bytesused)
+                state = VB2_BUF_STATE_ERROR;
          }
-
-        if (!bytesused)
-            state = VB2_BUF_STATE_ERROR;
      } else {
          vbuf->sequence = inst->sequence_out++;
      }

---
base-commit: 663d0d1af3faefe673cabf4b6b077149a87ad71f
change-id: 20251126-fix-error-state-24183a8538cd

Best regards,
--
Renjiang Han <renjiang.han@xxxxxxxxxxxxxxxx>


--
Best regards,
Renjiang Han