From patchwork Wed Feb 27 20:18:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 31654 Received: (qmail 114851 invoked by alias); 27 Feb 2019 20:19:00 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 114685 invoked by uid 89); 27 Feb 2019 20:18:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:3679 X-HELO: gateway23.websitewelcome.com Received: from gateway23.websitewelcome.com (HELO gateway23.websitewelcome.com) (192.185.47.80) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 27 Feb 2019 20:18:57 +0000 Received: from cm14.websitewelcome.com (cm14.websitewelcome.com [100.42.49.7]) by gateway23.websitewelcome.com (Postfix) with ESMTP id 444E484F4 for ; Wed, 27 Feb 2019 14:18:55 -0600 (CST) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id z5fLgrfni2qH7z5fLgMvrT; Wed, 27 Feb 2019 14:18:55 -0600 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=KYqX/wuHAD4vvNF3iIytqjnsdoJg+nn6m/Gfn3tGnqg=; b=Py8hX7xQ4jQpI2SjNEiHvUxDTh 2UUGUvEvjfKNNapUuL7x5SvMgUjh8QJ6x6qfwzHRu7eKCPxCAGRXKLcp1MZMdpaPFqVeUPvNRHe+y Odclf/JdiNKXikzI1v2SiiNlD; Received: from 75-166-85-218.hlrn.qwest.net ([75.166.85.218]:36364 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1gz5fL-004Fi1-5j; Wed, 27 Feb 2019 14:18:55 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v2 09/22] Remove last cleanup from linux-namespaces.c Date: Wed, 27 Feb 2019 13:18:36 -0700 Message-Id: <20190227201849.32210-10-tom@tromey.com> In-Reply-To: <20190227201849.32210-1-tom@tromey.com> References: <20190227201849.32210-1-tom@tromey.com> This removes the last cleanup from linux-namespaces.c, replacing it with a use of SCOPE_EXIT. gdb/ChangeLog 2019-02-27 Tom Tromey * nat/linux-namespaces.c (linux_mntns_access_fs): Use SCOPE_EXIT. * common/filestuff.h (make_cleanup_close): Don't declare. * common/filestuff.c (do_close_cleanup, make_cleanup_close): Remove. --- gdb/ChangeLog | 7 +++++++ gdb/common/filestuff.c | 21 ------------------- gdb/common/filestuff.h | 4 ---- gdb/nat/linux-namespaces.c | 41 ++++++++++++++------------------------ 4 files changed, 22 insertions(+), 51 deletions(-) diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c index 0d2fa8d6336..1ca62482a7e 100644 --- a/gdb/common/filestuff.c +++ b/gdb/common/filestuff.c @@ -426,27 +426,6 @@ gdb_pipe_cloexec (int filedes[2]) return result; } -/* Helper function which does the work for make_cleanup_close. */ - -static void -do_close_cleanup (void *arg) -{ - int *fd = (int *) arg; - - close (*fd); -} - -/* See filestuff.h. */ - -struct cleanup * -make_cleanup_close (int fd) -{ - int *saved_fd = XNEW (int); - - *saved_fd = fd; - return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree); -} - /* See common/filestuff.h. */ bool diff --git a/gdb/common/filestuff.h b/gdb/common/filestuff.h index 7e95b9ca2d4..c50781da01c 100644 --- a/gdb/common/filestuff.h +++ b/gdb/common/filestuff.h @@ -112,10 +112,6 @@ extern int gdb_socket_cloexec (int domain, int style, int protocol); extern int gdb_pipe_cloexec (int filedes[2]); -/* Return a new cleanup that closes FD. */ - -extern struct cleanup *make_cleanup_close (int fd); - struct gdb_dir_deleter { void operator() (DIR *dir) const diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c index 812f8c19767..c0f326b9a1e 100644 --- a/gdb/nat/linux-namespaces.c +++ b/gdb/nat/linux-namespaces.c @@ -28,6 +28,7 @@ #include "common/gdb_wait.h" #include #include +#include "common/scope-exit.h" /* See nat/linux-namespaces.h. */ int debug_linux_namespaces; @@ -887,12 +888,11 @@ enum mnsh_fs_code static enum mnsh_fs_code linux_mntns_access_fs (pid_t pid) { - struct cleanup *old_chain; struct linux_ns *ns; struct stat sb; struct linux_mnsh *helper; ssize_t size; - int fd, saved_errno; + int fd; if (pid == getpid ()) return MNSH_FS_DIRECT; @@ -901,27 +901,26 @@ linux_mntns_access_fs (pid_t pid) if (ns == NULL) return MNSH_FS_DIRECT; - old_chain = make_cleanup (null_cleanup, NULL); - fd = gdb_open_cloexec (linux_ns_filename (ns, pid), O_RDONLY, 0); if (fd < 0) - goto error; + return MNSH_FS_ERROR; - make_cleanup_close (fd); + SCOPE_EXIT + { + int save_errno = errno; + close (fd); + errno = save_errno; + }; if (fstat (fd, &sb) != 0) - goto error; + return MNSH_FS_ERROR; if (sb.st_ino == ns->id) - { - do_cleanups (old_chain); - - return MNSH_FS_DIRECT; - } + return MNSH_FS_DIRECT; helper = linux_mntns_get_helper (); if (helper == NULL) - goto error; + return MNSH_FS_ERROR; if (sb.st_ino != helper->nsid) { @@ -929,10 +928,10 @@ linux_mntns_access_fs (pid_t pid) size = mnsh_send_setns (helper, fd, 0); if (size < 0) - goto error; + return MNSH_FS_ERROR; if (mnsh_recv_int (helper, &result, &error) != 0) - goto error; + return MNSH_FS_ERROR; if (result != 0) { @@ -945,23 +944,13 @@ linux_mntns_access_fs (pid_t pid) error = ENOTSUP; errno = error; - goto error; + return MNSH_FS_ERROR; } helper->nsid = sb.st_ino; } - do_cleanups (old_chain); - return MNSH_FS_HELPER; - -error: - saved_errno = errno; - - do_cleanups (old_chain); - - errno = saved_errno; - return MNSH_FS_ERROR; } /* See nat/linux-namespaces.h. */