Re: [PATCH v6 3/5] misc: fastrpc: Add support for context Invoke method

From: Srinivas Kandagatla
Date: Fri Feb 08 2019 - 09:26:38 EST




On 08/02/2019 14:11, Greg KH wrote:
On 08/02/2019 13:55, Greg KH wrote:
+
+ /* Make sure reserved field is set to 0 */
+ if (args->reserved) {
+ kfree(args);
+ return -EINVAL;
Am I wrong in that you are only checking the first reserved field in
this array of args? Don't you have a whole bunch of them here (nscalars
of them)? Don't you need to check them all and not just the first one?
My Bad, there should be a loop here!
I will fix this in next version!
No, you don't need to loop it here, check it in the call that evaluates
the individual args, which will catch the issue when people send
"internal" commands.

Yes, that makes more sense. We can avoid a loop here and do the check in fastrpc_get_args().

Which reminds me, what happens if a sequence has problems half way
through the list of args? Do you "roll back" to the beginning, or just
abort? What happens to the internal device state then?

We should abort the invoke if this check fails.

All the arguments are passed in a single invoke call to dsp, so if the sanity fails we should not even attempt to send it to dsp.

fastrpc_context_put in fastrpc_internal_invoke() should take care of any mappings created half way thru this checks.

--srini