I removed most of the compat IOCTLS except this one.
What prevents you from doing that and requiring compat support?
The reason is that this ioctl takes arguments which can vary in number for
each call.
Then do not do that :)
Remember, you get to design the api, fix the structure size to work
properly everywhere.
So args are passed as pointer to structure, rather than fixed
size. I could not find better way to rearrange this to give a fixed size
data structure. In theory number of arguments can vary from 0-255 for both
in & out.
current data structure looks like this:
struct fastrpc_invoke_args {
__s32 fd;
size_t length;
void *ptr;
};
Make length and ptr both __u64 and you should be fine, right? If you do
that, might as well make fd __u64 as well to align things better.
struct fastrpc_invoke {
__u32 handle;
__u32 sc;
struct fastrpc_invoke_args *args;
};
--srini