Re: [PATCH] remove sys_security

Andi Kleen
2002-10-18T09:19:07Z

Crispin Cowan <crispin@wirex.com> writes:

> Could you elaborate on why this is a sign of trouble, design wise?

David refers to the 32bit emulation issues. Some ports have a 64bit
kernel, but support 64bit and 32bit userland (e.g. ia64 or x86-64).
Some ports even only have 32bit userland but 64bit kernel (like sparc64 or
mips64)

The 32bit and the 64bit worlds have different data types. Structure
layout are different. To handle this the kernel has an emulation
layer that converts the arguments of ioctls and system calls between
32bit and 64bit.

This emulation layer sits at the 'edge' of the kernel. For example
to convert an ioctl it first figures out the ioctl, converts it
then reissues the same ioctl internally with 64bit arguments. When
the ioctl returns outgoing arguments are converted too as needed.

For this to work all data structures need to be transparent.
The emulation layer needs to have a way to figure out what and
how to convert without looking at internal state in the kernel.
Otherwise it cannot do its job.

Without working emulation sparc64 won't work and David will be unhappy.

-Andi