* [PATCH 0/2] media: venus: fix HFI parser payload size returns
@ 2026-06-10 12:56 Mohammed EL Kadiri
2026-06-10 12:56 ` [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode() Mohammed EL Kadiri
2026-06-10 12:56 ` [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats() Mohammed EL Kadiri
0 siblings, 2 replies; 5+ messages in thread
From: Mohammed EL Kadiri @ 2026-06-10 12:56 UTC (permalink / raw)
To: quic_vgarodia, quic_dikshita, bryan.odonoghue, mchehab
Cc: hverkuil, dmitry.baryshkov, linux-media, linux-arm-msm,
linux-kernel, Mohammed EL Kadiri
Several parse functions return incorrect consumed sizes after the
refactor in commit 9edaaa8e3e15. hfi_parser() uses these values to
advance through the firmware response buffer, so incorrect sizes cause
parser desynchronization.
parse_profile_level() has the correct pattern. These patches align the
remaining functions to match it.
Compile-tested with arm64 cross-compiler (gcc 13.3).
Mohammed EL Kadiri (2):
media: venus: fix payload size returned by parse_caps() and
parse_alloc_mode()
media: venus: fix payload size calculation in parse_raw_formats()
drivers/media/platform/qcom/venus/hfi_parser.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode()
2026-06-10 12:56 [PATCH 0/2] media: venus: fix HFI parser payload size returns Mohammed EL Kadiri
@ 2026-06-10 12:56 ` Mohammed EL Kadiri
2026-06-10 13:26 ` Dmitry Baryshkov
2026-06-10 12:56 ` [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats() Mohammed EL Kadiri
1 sibling, 1 reply; 5+ messages in thread
From: Mohammed EL Kadiri @ 2026-06-10 12:56 UTC (permalink / raw)
To: quic_vgarodia, quic_dikshita, bryan.odonoghue, mchehab
Cc: hverkuil, dmitry.baryshkov, linux-media, linux-arm-msm,
linux-kernel, Mohammed EL Kadiri, stable
parse_caps() and parse_alloc_mode() return only the size of their fixed
header fields, excluding the flexible array payload. hfi_parser() uses
this return value to advance through the firmware response buffer, so
underreporting causes parser desynchronization.
Return the full consumed size (header + entries), matching the correct
pattern used by parse_profile_level().
Fixes: 9edaaa8e3e15 ("media: venus: hfi_parser: refactor hfi packet parsing logic")
Cc: stable@vger.kernel.org
Signed-off-by: Mohammed EL Kadiri <med08elkadiri@gmail.com>
---
drivers/media/platform/qcom/venus/hfi_parser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/hfi_parser.c b/drivers/media/platform/qcom/venus/hfi_parser.c
index 1b3db2caa99f..e2af4e9901ee 100644
--- a/drivers/media/platform/qcom/venus/hfi_parser.c
+++ b/drivers/media/platform/qcom/venus/hfi_parser.c
@@ -85,7 +85,7 @@ parse_alloc_mode(struct venus_core *core, u32 codecs, u32 domain, void *data)
type++;
}
- return sizeof(*mode);
+ return mode->num_entries * sizeof(u32) + sizeof(*mode);
}
static void fill_profile_level(struct hfi_plat_caps *cap, const void *data,
@@ -146,7 +146,7 @@ parse_caps(struct venus_core *core, u32 codecs, u32 domain, void *data)
for_each_codec(core->caps, ARRAY_SIZE(core->caps), codecs, domain,
fill_caps, caps_arr, num_caps);
- return sizeof(*caps);
+ return num_caps * sizeof(*cap) + sizeof(u32);
}
static void fill_raw_fmts(struct hfi_plat_caps *cap, const void *fmts,
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats()
2026-06-10 12:56 [PATCH 0/2] media: venus: fix HFI parser payload size returns Mohammed EL Kadiri
2026-06-10 12:56 ` [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode() Mohammed EL Kadiri
@ 2026-06-10 12:56 ` Mohammed EL Kadiri
2026-06-10 13:26 ` Dmitry Baryshkov
1 sibling, 1 reply; 5+ messages in thread
From: Mohammed EL Kadiri @ 2026-06-10 12:56 UTC (permalink / raw)
To: quic_vgarodia, quic_dikshita, bryan.odonoghue, mchehab
Cc: hverkuil, dmitry.baryshkov, linux-media, linux-arm-msm,
linux-kernel, Mohammed EL Kadiri, stable
The consumed size is computed after the loop using the num_planes value
from the last iteration for all entries. When entries have different
plane counts, this produces an incorrect total.
Accumulate the actual size during the loop instead.
Fixes: 9edaaa8e3e15 ("media: venus: hfi_parser: refactor hfi packet parsing logic")
Cc: stable@vger.kernel.org
Signed-off-by: Mohammed EL Kadiri <med08elkadiri@gmail.com>
---
drivers/media/platform/qcom/venus/hfi_parser.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/hfi_parser.c b/drivers/media/platform/qcom/venus/hfi_parser.c
index e2af4e9901ee..522bac7ba154 100644
--- a/drivers/media/platform/qcom/venus/hfi_parser.c
+++ b/drivers/media/platform/qcom/venus/hfi_parser.c
@@ -171,7 +171,7 @@ parse_raw_formats(struct venus_core *core, u32 codecs, u32 domain, void *data)
u32 entries = fmt->format_entries;
unsigned int i = 0;
u32 num_planes = 0;
- u32 size;
+ u32 size = 2 * sizeof(u32);
while (entries) {
num_planes = pinfo->num_planes;
@@ -186,6 +186,7 @@ parse_raw_formats(struct venus_core *core, u32 codecs, u32 domain, void *data)
if (pinfo->num_planes > MAX_PLANES)
break;
+ size += sizeof(*constr) * num_planes + 2 * sizeof(u32);
pinfo = (void *)pinfo + sizeof(*constr) * num_planes +
2 * sizeof(u32);
entries--;
@@ -193,8 +194,6 @@ parse_raw_formats(struct venus_core *core, u32 codecs, u32 domain, void *data)
for_each_codec(core->caps, ARRAY_SIZE(core->caps), codecs, domain,
fill_raw_fmts, rawfmts, i);
- size = fmt->format_entries * (sizeof(*constr) * num_planes + 2 * sizeof(u32))
- + 2 * sizeof(u32);
return size;
}
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode()
2026-06-10 12:56 ` [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode() Mohammed EL Kadiri
@ 2026-06-10 13:26 ` Dmitry Baryshkov
0 siblings, 0 replies; 5+ messages in thread
From: Dmitry Baryshkov @ 2026-06-10 13:26 UTC (permalink / raw)
To: Mohammed EL Kadiri
Cc: quic_vgarodia, quic_dikshita, bryan.odonoghue, mchehab, hverkuil,
linux-media, linux-arm-msm, linux-kernel, stable
On Wed, Jun 10, 2026 at 01:56:54PM +0100, Mohammed EL Kadiri wrote:
> parse_caps() and parse_alloc_mode() return only the size of their fixed
> header fields, excluding the flexible array payload. hfi_parser() uses
> this return value to advance through the firmware response buffer, so
> underreporting causes parser desynchronization.
>
> Return the full consumed size (header + entries), matching the correct
> pattern used by parse_profile_level().
>
> Fixes: 9edaaa8e3e15 ("media: venus: hfi_parser: refactor hfi packet parsing logic")
> Cc: stable@vger.kernel.org
> Signed-off-by: Mohammed EL Kadiri <med08elkadiri@gmail.com>
> ---
> drivers/media/platform/qcom/venus/hfi_parser.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats()
2026-06-10 12:56 ` [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats() Mohammed EL Kadiri
@ 2026-06-10 13:26 ` Dmitry Baryshkov
0 siblings, 0 replies; 5+ messages in thread
From: Dmitry Baryshkov @ 2026-06-10 13:26 UTC (permalink / raw)
To: Mohammed EL Kadiri
Cc: quic_vgarodia, quic_dikshita, bryan.odonoghue, mchehab, hverkuil,
linux-media, linux-arm-msm, linux-kernel, stable
On Wed, Jun 10, 2026 at 01:56:55PM +0100, Mohammed EL Kadiri wrote:
> The consumed size is computed after the loop using the num_planes value
> from the last iteration for all entries. When entries have different
> plane counts, this produces an incorrect total.
>
> Accumulate the actual size during the loop instead.
>
> Fixes: 9edaaa8e3e15 ("media: venus: hfi_parser: refactor hfi packet parsing logic")
> Cc: stable@vger.kernel.org
> Signed-off-by: Mohammed EL Kadiri <med08elkadiri@gmail.com>
> ---
> drivers/media/platform/qcom/venus/hfi_parser.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-06-10 13:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-10 12:56 [PATCH 0/2] media: venus: fix HFI parser payload size returns Mohammed EL Kadiri
2026-06-10 12:56 ` [PATCH 1/2] media: venus: fix payload size returned by parse_caps() and parse_alloc_mode() Mohammed EL Kadiri
2026-06-10 13:26 ` Dmitry Baryshkov
2026-06-10 12:56 ` [PATCH 2/2] media: venus: fix payload size calculation in parse_raw_formats() Mohammed EL Kadiri
2026-06-10 13:26 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®