add closefrom() call
Robert Watson
rwatson at FreeBSD.org
Fri Jul 6 11:50:18 UTC 2007
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
More information about the freebsd-hackers
mailing list