From owner-cvs-all@FreeBSD.ORG Tue Oct 24 10:30:51 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B0CA616A415; Tue, 24 Oct 2006 10:30:51 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from sippysoft.com (gk.360sip.com [72.236.70.226]) by mx1.FreeBSD.org (Postfix) with ESMTP id 345C943D5C; Tue, 24 Oct 2006 10:30:51 +0000 (GMT) (envelope-from sobomax@FreeBSD.org) Received: from [192.168.1.47] ([204.244.149.125]) (authenticated bits=0) by sippysoft.com (8.13.8/8.13.6) with ESMTP id k9OAUlPv021997 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 24 Oct 2006 03:30:49 -0700 (PDT) (envelope-from sobomax@FreeBSD.org) Message-ID: <453DEB1B.6040900@FreeBSD.org> Date: Tue, 24 Oct 2006 03:29:47 -0700 From: Maxim Sobolev Organization: Sippy Software, Inc. User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: Robert Watson References: <200610240818.k9O8IATH022313@repoman.freebsd.org> <20061024094643.N37455@fledge.watson.org> <453DDED4.3070208@FreeBSD.org> <20061024104143.Y37455@fledge.watson.org> <453DE26E.3040502@FreeBSD.org> <20061024105800.J37455@fledge.watson.org> In-Reply-To: <20061024105800.J37455@fledge.watson.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.bin/su su.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Oct 2006 10:30:51 -0000 Robert Watson wrote: > The method by which the distinction between ENOSYS+SIGSYS and plain > ENOSYS is determined is in the implementation of the system call. If a > system call is flagged as unimplemented (i.e., you never hit the > function implementing it), you get SIGSYS+ENOSYS. If you enter the > stub, you get ENOSYS. So the problem is that the compat code doesn't > enter the stub, so never gets to the ENOSYS path. A casual glance at > the system call arguments for audit suggest that wrappers aren't needed > (no pointers embedded in structure arguments), so simply marking them as > implemented will likely work. Well unless I have confused something it is not really the case. For example, getauid() system call takes pointer as an argument. But in fact you did not answer my question. I think we should have ability to flag the syscall as optional in the compatibility layer, just like we have ability to do so in the native layer, so that attempt to call it results in ENOSYS but not SIGSYS. There is no point to mandate implementing wrapper for the otherwise optional syscall - all userland binaries that can call it should be ready to handle ENOSYS properly, so that just returning ENOSYS unconditionally will hurt nothing, while promoting binary compatibility until the call gets real wrapper. Just like my own experience with failing su(8) suggests. -Maxim