]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
lib/: set O_CLOEXEC on all fds
authorнаб <nabijaczleweli@nabijaczleweli.xyz>
Thu, 8 Apr 2021 20:17:38 +0000 (22:17 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 14 Apr 2021 20:23:07 +0000 (13:23 -0700)
commit2453d0263d1c2169c0f2671b900dde976745af20
treee37a8848718c0381c8fe4071b38971564a2f11eb
parentab88e9e264c0500c2e758a16abf2f5d598f41a7c
lib/: set O_CLOEXEC on all fds

As found by
  git grep -E '(open|setmntent|pipe2?)\(' |
    grep -vE '((zfs|zpool)_|fd|dl|lzc_re|pidfile_|g_)open\('

FreeBSD's pidfile_open() says nothing about the flags of the files it
opens, but we can't do anything about it anyway; the implementation does
open all files with O_CLOEXEC

Consider this output with zpool.d/media appended with
"pid=$$; (ls -l /proc/$pid/fd > /dev/tty)":
  $ /sbin/zpool iostat -vc media
  lrwx------ 0 -> /dev/pts/0
  l-wx------ 1 -> 'pipe:[3278500]'
  l-wx------ 2 -> /dev/null
  lrwx------ 3 -> /dev/zfs
  lr-x------ 4 -> /proc/31895/mounts
  lrwx------ 5 -> /dev/zfs
  lr-x------ 10 -> /usr/lib/zfs-linux/zpool.d/media
vs
  $ ./zpool iostat -vc vendor,upath,iostat,media
  lrwx------ 0 -> /dev/pts/0
  l-wx------ 1 -> 'pipe:[3279887]'
  l-wx------ 2 -> /dev/null
  lr-x------ 10 -> /usr/lib/zfs-linux/zpool.d/media

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #11866
22 files changed:
include/sys/zfs_context.h
lib/libshare/os/freebsd/nfs.c
lib/libshare/os/linux/nfs.c
lib/libshare/os/linux/smb.c
lib/libspl/os/linux/gethostid.c
lib/libspl/os/linux/getmntany.c
lib/libuutil/uu_open.c
lib/libzfs/libzfs_crypto.c
lib/libzfs/libzfs_diff.c
lib/libzfs/libzfs_iter.c
lib/libzfs/libzfs_pool.c
lib/libzfs/libzfs_sendrecv.c
lib/libzfs/libzfs_util.c
lib/libzfs/os/linux/libzfs_pool_os.c
lib/libzfs/os/linux/libzfs_sendrecv_os.c
lib/libzfs/os/linux/libzfs_util_os.c
lib/libzpool/kernel.c
lib/libzpool/util.c
lib/libzutil/os/freebsd/zutil_import_os.c
lib/libzutil/os/linux/zutil_device_path_os.c
lib/libzutil/os/linux/zutil_import_os.c
lib/libzutil/zutil_import.c