mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
media: venus: fix payload size calculation in parse_raw_formats()
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: 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:
parent
a51cea23e4
commit
bd595b745e
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user