Fix stale cleanup left by linux_mntns_access_fs
[deliverable/binutils-gdb.git] / gdb / nat / linux-namespaces.c
index f710c03bf499d309a26874fdc3ee55c26415403e..434142936e2f236066d61cb60f2837e59be84e41 100644 (file)
@@ -25,7 +25,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/socket.h>
-#include <sys/wait.h>
+#include "gdb_wait.h"
 #include <signal.h>
 #include <sched.h>
 
@@ -34,17 +34,23 @@ int debug_linux_namespaces;
 
 /* Handle systems without setns.  */
 
-#ifndef HAVE_SETNS
-static int
-setns (int fd, int nstype)
+static inline int
+do_setns (int fd, int nstype)
 {
-#ifdef __NR_setns
+#ifdef HAVE_SETNS
+  return setns (fd, nstype);
+#elif defined __NR_setns
   return syscall (__NR_setns, fd, nstype);
 #else
   errno = ENOSYS;
   return -1;
 #endif
 }
+
+/* Handle systems without MSG_CMSG_CLOEXEC.  */
+
+#ifndef MSG_CMSG_CLOEXEC
+#define MSG_CMSG_CLOEXEC 0
 #endif
 
 /* A Linux namespace.  */
@@ -374,7 +380,7 @@ mnsh_send_message (int sock, enum mnsh_msg_type type,
     {
       debug_printf ("mnsh: send: ");
       mnsh_debug_print_message (type, fd, int1, int2, buf, bufsiz);
-      debug_printf (" -> %ld\n", size);
+      debug_printf (" -> %s\n", pulongest (size));
     }
 
   return size;
@@ -426,7 +432,8 @@ mnsh_recv_message (int sock, enum mnsh_msg_type *type,
   if (size < 0)
     {
       if (debug_linux_namespaces)
-       debug_printf ("namespace-helper: recv failed (%ld)\n", size);
+       debug_printf ("namespace-helper: recv failed (%s)\n",
+                     pulongest (size));
 
       mnsh_maybe_mourn_peer ();
 
@@ -437,8 +444,8 @@ mnsh_recv_message (int sock, enum mnsh_msg_type *type,
   if (size < fixed_size || (msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC)))
     {
       if (debug_linux_namespaces)
-       debug_printf ("namespace-helper: recv truncated (%ld 0x%x)\n",
-                     size, msg.msg_flags);
+       debug_printf ("namespace-helper: recv truncated (%s 0x%x)\n",
+                     pulongest (size), msg.msg_flags);
 
       mnsh_maybe_mourn_peer ();
 
@@ -488,7 +495,7 @@ mnsh_recv_message (int sock, enum mnsh_msg_type *type,
 static ssize_t
 mnsh_handle_setns (int sock, int fd, int nstype)
 {
-  int result = setns (fd, nstype);
+  int result = do_setns (fd, nstype);
 
   return mnsh_return_int (sock, result, errno);
 }
@@ -887,7 +894,7 @@ linux_mntns_access_fs (pid_t pid)
   if (fd < 0)
     goto error;
 
-  old_chain = make_cleanup_close (fd);
+  make_cleanup_close (fd);
 
   if (fstat (fd, &sb) != 0)
     goto error;
This page took 0.026202 seconds and 4 git commands to generate.