That function is meant more for user programs, and should still be rarely used, since it's not portable. Instead, we already know the number of arguments. We just call __lc_fast_syscallN, which also sets errno.
FIXME: exec() is now doing weird page table stuff. But at least it works, no panics :)