Module Name: src Committed By: riastradh Date: Sun Nov 10 16:14:52 UTC 2024
Modified Files: src/sys/sys: filedesc.h Log Message: sys/filedesc.h: Add a note about writing to ff_exclose. No functional change intended -- just a reminder to avoid repeating a class of bugs we've had. PR kern/58822: close-on-exec is broken for dup3 and opening cloning devices To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 src/sys/sys/filedesc.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/filedesc.h diff -u src/sys/sys/filedesc.h:1.70 src/sys/sys/filedesc.h:1.71 --- src/sys/sys/filedesc.h:1.70 Wed Oct 26 23:39:10 2022 +++ src/sys/sys/filedesc.h Sun Nov 10 16:14:52 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: filedesc.h,v 1.70 2022/10/26 23:39:10 riastradh Exp $ */ +/* $NetBSD: filedesc.h,v 1.71 2024/11/10 16:14:52 riastradh Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -102,9 +102,15 @@ * the same way, but in this case it's ok: ff_exclose can only be * modified while the descriptor slot is live, and ff_allocated when * it's invalid. + * + * NOTE: ff_exclose should generally be set with fd_set_exclose(), not + * written to directly, when implementing flags like O_CLOEXEC or + * SOCK_CLOEXEC, so that struct filedesc::fd_exclose is updated as + * needed. See PR kern/58855: close-on-exec is broken for dup3 and + * opening cloning devices. */ typedef struct fdfile { - bool ff_exclose; /* :: close on exec flag */ + bool ff_exclose; /* :: close on exec (fd_set_exclose) */ bool ff_allocated; /* d: descriptor slot is allocated */ u_int ff_refcnt; /* a: reference count on structure */ struct file *ff_file; /* d: pointer to file if open */