mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 16:53:20 -04:00
media: venus: fix payload size returned by parse_caps() and parse_alloc_mode()
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: 9edaaa8e3e ("media: venus: hfi_parser: refactor hfi packet parsing logic")
Cc: stable@vger.kernel.org
Signed-off-by: Mohammed EL Kadiri <med08elkadiri@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
This commit is contained in:
committed by
Bryan O'Donoghue
parent
5eebacbc9a
commit
a51cea23e4
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user