Module Name: src Committed By: christos Date: Sat Oct 15 21:08:53 UTC 2011
Modified Files: src/lib/libkvm: kvm.c Log Message: kill open_cloexec() To generate a diff of this commit: cvs rdiff -u -r1.98 -r1.99 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.98 src/lib/libkvm/kvm.c:1.99 --- src/lib/libkvm/kvm.c:1.98 Mon Sep 12 17:11:32 2011 +++ src/lib/libkvm/kvm.c Sat Oct 15 17:08:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -80,7 +80,6 @@ static kvm_t *_kvm_open(kvm_t *, const c const char *, int, char *); static int clear_gap(kvm_t *, bool (*)(void *, const void *, size_t), void *, size_t); -static int open_cloexec(const char *, int, int); static off_t Lseek(kvm_t *, int, off_t, int); static ssize_t Pread(kvm_t *, int, void *, size_t, off_t); @@ -152,27 +151,6 @@ _kvm_malloc(kvm_t *kd, size_t n) } /* - * Open a file setting the close on exec bit. - */ -static int -open_cloexec(const char *fname, int flags, int mode) -{ - int fd; - - if ((fd = open(fname, flags, mode)) == -1) - return fd; - if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) - goto error; - - return fd; -error: - flags = errno; - (void)close(fd); - errno = flags; - return -1; -} - -/* * Wrapper around the lseek(2) system call; calls _kvm_syserr() for us * in the event of emergency. */ @@ -336,9 +314,9 @@ _kvm_open(kvm_t *kd, const char *uf, con * exist, open the current kernel. */ if (ufgiven == 0) - kd->nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0); + kd->nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0); if (kd->nlfd < 0) { - if ((kd->nlfd = open_cloexec(uf, O_RDONLY, 0)) < 0) { + if ((kd->nlfd = open(uf, O_RDONLY | O_CLOEXEC, 0)) < 0) { _kvm_syserr(kd, kd->program, "%s", uf); goto failed; } @@ -356,7 +334,7 @@ _kvm_open(kvm_t *kd, const char *uf, con kd->nlfd = -1; } - if ((kd->pmfd = open_cloexec(mf, flag, 0)) < 0) { + if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) { _kvm_syserr(kd, kd->program, "%s", mf); goto failed; } @@ -370,12 +348,12 @@ _kvm_open(kvm_t *kd, const char *uf, con * make it work for either /dev/mem or /dev/kmem -- in either * case you're working with a live kernel.) */ - if ((kd->vmfd = open_cloexec(_PATH_KMEM, flag, 0)) < 0) { + if ((kd->vmfd = open(_PATH_KMEM, flag | O_CLOEXEC, 0)) < 0) { _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM); goto failed; } kd->alive = KVM_ALIVE_FILES; - if ((kd->swfd = open_cloexec(sf, flag, 0)) < 0) { + if ((kd->swfd = open(sf, flag | O_CLOEXEC, 0)) < 0) { if (errno != ENXIO) { _kvm_syserr(kd, kd->program, "%s", sf); goto failed; @@ -781,7 +759,7 @@ kvm_nlist(kvm_t *kd, struct nlist *nl) * So open it again, just for the time we retrieve the list. */ if (kd->nlfd < 0) { - nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0); + nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0); if (nlfd < 0) { _kvm_err(kd, 0, "failed to open %s", _PATH_KSYMS); return (nlfd);