Skip to content

Commit 3a1bf59

Browse files
Jeya Rgregkh
authored andcommitted
misc: fastrpc: fix improper packet size calculation
The buffer list is sorted and this is not being considered while calculating packet size. This would lead to improper copy length calculation for non-dmaheap buffers which would eventually cause sending improper buffers to DSP. Fixes: c68cfb7 ("misc: fastrpc: Add support for context Invoke method") Reviewed-by: Srinivas Kandagatla <[email protected]> Signed-off-by: Jeya R <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent f129720 commit 3a1bf59

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

drivers/misc/fastrpc.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -719,16 +719,18 @@ static int fastrpc_get_meta_size(struct fastrpc_invoke_ctx *ctx)
719719
static u64 fastrpc_get_payload_size(struct fastrpc_invoke_ctx *ctx, int metalen)
720720
{
721721
u64 size = 0;
722-
int i;
722+
int oix;
723723

724724
size = ALIGN(metalen, FASTRPC_ALIGN);
725-
for (i = 0; i < ctx->nscalars; i++) {
725+
for (oix = 0; oix < ctx->nbufs; oix++) {
726+
int i = ctx->olaps[oix].raix;
727+
726728
if (ctx->args[i].fd == 0 || ctx->args[i].fd == -1) {
727729

728-
if (ctx->olaps[i].offset == 0)
730+
if (ctx->olaps[oix].offset == 0)
729731
size = ALIGN(size, FASTRPC_ALIGN);
730732

731-
size += (ctx->olaps[i].mend - ctx->olaps[i].mstart);
733+
size += (ctx->olaps[oix].mend - ctx->olaps[oix].mstart);
732734
}
733735
}
734736

0 commit comments

Comments
 (0)