Kindly remember that (no matter what the architecture),
"user-land can never affect kernel-land!"
Likewise, "kernel-land behavior" cannot
(or, rather, should not [elect to] ...) "affect user-land."
No matter what the
user-side may attempt to do, "before the system call is made," it cannot possibly affect the
kernel stack.
ln like manner, the kernel-side code
should not
(exercise its Sovereign Kernel Prerogatives™ to ...) meddle-with the user-land view of things.
And ...
"no kernel code should presume that it is actually executing on "an x86," versus, say, "what used to be called
'a System/370 ...'"
The user-side code "commits an irrevocable act" by executing a system call. By doing so, "it hands-over
all of the car-keys." It actually has
no idea "what happens next," and in any case it has no
influence over it. System-side code ought make no assumptions with regard to what user-side code has done: neither should it in any way
trust(!) it.
Certainly,
(IMHO ...) a
grave concern, here, is that it would seem (to me) that
"the kernel-side does trust the user." Not good. The kernel should probably always presume that the user is a
L33T H4X0R ...