HomeFreeBSD

kern: dup: do not assume oldfde is valid

Description

kern: dup: do not assume oldfde is valid

oldfde may be invalidated if the table has grown due to the operation that
we're performing, either via fdalloc() or a direct fdgrowtable_exp().

This was technically OK before rS367927 because the old table remained valid
until the filedesc became unused, but now it may be freed immediately if
it's an unshared table in a single-threaded process, so it is no longer a
good assumption to make.

This fixes dup/dup2 invocations that grow the file table; in the initial
report, it manifested as a kernel panic in devel/gmake's configure script.

(cherry picked from commit f96078b8fe55c944f32c3c82ebb9c360bc155823)

Details

Provenance
kevansAuthored on Nov 23 2020, 12:33 AM
Parents
rGd9cc55ea82fa: lualoader: add loader_conf_dirs support (loader.conf.d)
Branches
Unknown
Tags
Unknown