Re: [PATCH] broken TASK_SIZE for ia32_aout

From: Al Viro
Date: Sun May 06 2012 - 14:46:50 EST


On Sun, May 06, 2012 at 10:58:49AM -0700, H. Peter Anvin wrote:

> > What kind of semantics do we want? "Thread property" one, set when we
> > set personality on execve(), or "syscall property", like e.g. x86 TIF_IRET
> > and TS_COMPAT?
>
> It depends on the ABI properties of the platform. The x86 compat ABI is
> that any task can issue a compat ABI request and get a compat ABI
> response (a 64-bit task can call int $0x80 for an ia32 syscall
> invocation, or use syscall with either an x86-64 or and x32 system call
> number.) So is_compat_task() returns the current system call mode of
> the task, because that is what downstream users need. One of the
> biggest users is the input subsystem, which earns the black mark for
> worst possible ABI design, and that definitely depends on the system
> call type being invoked.

Umm... Let me restate that question: is there ever a case when it would
_not_ be a syscall property? I.e. when both 64bit and 32bit syscalls are
possible for a given process *and* callers of is_compat_task() care about
the kind of process and not the kind of syscall?

Is e.g. sparc behaviour ("what kind of process it is, regardless of whether
we are issuing a 32bit or a 64bit syscall") correct?

Sure, on a platform where the possible kind of syscall is a function of
process' personality, a thread property can be a used to tell which
kind of syscall we are in.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/