Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jul 2007 12:50:17 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        d@delphij.net
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: add closefrom() call
Message-ID:  <20070706124407.T9997@fledge.watson.org>
In-Reply-To: <468E16E6.6030608@delphij.net>
References:  <de5dfb5a0707041727j3e3518f9l5a019717a9f90aa@mail.gmail.com> <20070705122650.GE1302@britannica.bec.de> <468E16E6.6030608@delphij.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Fri, 6 Jul 2007, LI Xin wrote:

> Joerg Sonnenberger wrote:
>
>> On Wed, Jul 04, 2007 at 08:27:49PM -0400, Ighighi Ighighi wrote:
>>
>>> The closefrom() call, available in Solaris, is present in NetBSD since 
>>> version 3.0. It is implemented with the F_CLOSEM fcntl() available since 
>>> version 2.0.
>>
>> You could also add a system call like it was done in DragonFly. That might 
>> be even simpler to implement.
>
> Here is my implementation for FreeBSD.  Some difference between my and 
> DragonFly's implementation:
>
> - closefrom(-1) would be no-op on DragonFly, my version would close all
> open files (From my understanding of OpenSolaris's userland
> implementation, this is Solaris's behavior).
> - my version closefrom(very_big_fd) would result in EBADF.  I am not
> very sure whether this is correct, but it does not hurt for applications
> that thinks closefrom() would return void.
>
> To RW:  I have not found a suitable audit event for this, should I create a 
> new event?

Solaris side-steps this issue by simply auditing the individual close() system 
calls.  My preference would be that we implement this in user space also, 
which would likewise generate a series of audit events, one for each system 
call.  The procfs optimization they use (I wonder -- is it really an 
optimization?) won't work for us, however.  Do you think that there's a strong 
motivation to provide a closefrom(2) system call, rather than a closefrom(3) 
library call?  This would let us neatly avoid the question you've posed :-).

Robert N M Watson
Computer Laboratory
University of Cambridge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070706124407.T9997>