mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
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
This commit is contained in:
@@ -723,15 +723,15 @@ lowbit64(uint64_t i)
|
||||
return (__builtin_ffsll(i));
|
||||
}
|
||||
|
||||
char *random_path = "/dev/random";
|
||||
char *urandom_path = "/dev/urandom";
|
||||
const char *random_path = "/dev/random";
|
||||
const char *urandom_path = "/dev/urandom";
|
||||
static int random_fd = -1, urandom_fd = -1;
|
||||
|
||||
void
|
||||
random_init(void)
|
||||
{
|
||||
VERIFY((random_fd = open(random_path, O_RDONLY)) != -1);
|
||||
VERIFY((urandom_fd = open(urandom_path, O_RDONLY)) != -1);
|
||||
VERIFY((random_fd = open(random_path, O_RDONLY | O_CLOEXEC)) != -1);
|
||||
VERIFY((urandom_fd = open(urandom_path, O_RDONLY | O_CLOEXEC)) != -1);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
+1
-1
@@ -259,7 +259,7 @@ pool_active(void *unused, const char *name, uint64_t guid,
|
||||
* Use ZFS_IOC_POOL_SYNC to confirm if a pool is active
|
||||
*/
|
||||
|
||||
fd = open(ZFS_DEV, O_RDWR);
|
||||
fd = open(ZFS_DEV, O_RDWR | O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return (-1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user