That's just handwaving. Apps don't normally change memory under
system call arguments. Or if they do the only thing we ever guarantee
is that the thing won't blow up in a big fireball.
I don't see how getting the data from userspace is different from
doing the same in the kernel. Care to explain?
> >> That is why I'm suggesting using an in-kernel linearizer.
And with ioctls (at least if the filesystem supplies the linearizer
instructions) you simply _cannot_ get proper privilege separation.
Generic ioctl support will always be a privileged thing.
Alternatively we can restrict ioctls. Most ioctls conform to some
convention for encoding the format (size/in/out) in the command, no?