[RFC][BZ #14627] Make linux close errno to EINPROGRESS when interrupted in signal.
David Miller
davem@davemloft.net
Fri Dec 6 01:39:00 GMT 2013
From: Rich Felker <dalias@aerifal.cx>
Date: Thu, 5 Dec 2013 17:32:23 -0500
> http://austingroupbugs.net/view.php?id=529
>
> The new requirement is that EINTR means the fd is still open and
> EINPROGRESS means the operation was interrupted by a signal but the fd
> is no longer valid.
A behavior specified by POSIX is quite pointless considering decades
of precedence, which to me is more important than any standards
document.
close() cannot error if it is given a valid file descriptor, it would
break decades worth of existing code. And practically speaking,
returning errors on close() was tried for NFS in the Linux kernel
about 12 or 13 years ago, things broke and we had to revert that
change immediately. You simply cannot do it.
Leaving a file descriptor open after a close() is also asking for very
serious security problems. Just unpack an arbitary source tree and
grep for close() calls, how many are checking for errors at all?
Of the few that do, how do they handle it? Most just do something on
the order of abort().
More information about the Libc-alpha
mailing list