Re: cvs commit: src/usr.bin/su su.c

[ Available lists | Index of cvs-all | Month of Oct 2006 | Week of 24 Oct 2006 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Maxim Sobolev <sobomax@FreeBSD.org>
Date
24 Oct 2006 09:53:49
Subject
Re: cvs commit: src/usr.bin/su su.c
Message-ID
453DE26E.3040502@FreeBSD.org


[ Hide this part ]
Robert Watson wrote:
>
> On Tue, 24 Oct 2006, Maxim Sobolev wrote:
>
>> OK, in this particular case I am trying to run su(8) binary compiled
>> for FreeBSD/ia32 on FreeBSD/amd64 system (FreeBSD 6.2 but this doesn't
>> really make any difference since the code is the same).
>>
>> Since all audit syscalls in freebsd32 emulation layer are redirected
>> to nosys() any attempt to invoke such syscall results in both ENOSYS
>> errno *and* SIGSYS signal delivered to the process in question. The
>> latter kills the process without giving it any chance to handle ENOSYS.
>
> So the actual bug here is that there's no compat32 definitions for the
> audit system calls. I have a suspicion that we may need compat32
> wrappers in some cases, but you could start by simply exposing the audit
> system calls in compat32 by changing UNIMPL to STD (or MSTD in RELENG_6)?

Shouldn't unimplemented syscall have the same semantics in binary
compatibility mode and in native mode (i.e. ENOSYS, but not SIGSYS)?
That's my biggest confusion. Why do we get just ENOSYS in native mode
when audit is not in, while ENOSYS+SIGSYS in compatibility mode?

-Maxim


Elapsed time: 0.201 seconds