Update fd_freefile when filtering/closing kqueue descriptors in fdcopy().
authorjsing <jsing@openbsd.org>
Fri, 10 Aug 2018 15:53:49 +0000 (15:53 +0000)
committerjsing <jsing@openbsd.org>
Fri, 10 Aug 2018 15:53:49 +0000 (15:53 +0000)
commit9406475e8b3ea5593448995104226950635465a6
tree7aa35297b02db34d1ced3d0f6a23e27167e597fd
parentbce5f8ad33896e8b837ef7813c371182342390bc
Update fd_freefile when filtering/closing kqueue descriptors in fdcopy().

Prior to r1.153 of kern_descrip.c, the kqueue descriptors were removed
using fdremove(), which reset fd_freefile as appropriate. The new code
simply avoids adding the descriptor to the new table, however this means
that fd_freefile can be left with an incorrect value, resulting in a file
descriptor allocation "hole". Restore the previous behavour by lowering
fd_freefile as appropriate when dropping descriptors.

Issue found via golang regress tests.

ok deraadt@ mpi@ visa@
sys/kern/kern_descrip.c