WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] libxenlight: remove ctx dangerously passe

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] libxenlight: remove ctx dangerously passed to children
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 11 Jan 2010 23:25:35 -0800
Delivery-date: Mon, 11 Jan 2010 23:26:23 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1263279972 0
# Node ID 675443b02c530f4ddf0da720daa552e023d97f1a
# Parent  da6cddd200002cd5a3319a5c7b90f48681c3923a
libxenlight: remove ctx dangerously passed to children

apart from ctx->waitpid, it's potentially harmful to call into
logging.

Signed-off-by: Vincent Hanquez <vincent.hanquez@xxxxxxxxxxxxx>
---
 tools/libxl/libxl.c          |    4 ++--
 tools/libxl/libxl_exec.c     |   16 ++++++++--------
 tools/libxl/libxl_internal.h |    4 +---
 3 files changed, 11 insertions(+), 13 deletions(-)

diff -r da6cddd20000 -r 675443b02c53 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c       Tue Jan 12 07:05:22 2010 +0000
+++ b/tools/libxl/libxl.c       Tue Jan 12 07:06:12 2010 +0000
@@ -726,8 +726,8 @@ static char ** libxl_build_device_model_
     return (char **) flexarray_contents(dm_args);
 }
 
-void dm_xenstore_record_pid(struct libxl_ctx *ctx, void *for_spawn,
-                            pid_t innerchild) {
+void dm_xenstore_record_pid(void *for_spawn, pid_t innerchild)
+{
     struct libxl_device_model_starting *starting = for_spawn;
     char *kvs[3];
     int rc;
diff -r da6cddd20000 -r 675443b02c53 tools/libxl/libxl_exec.c
--- a/tools/libxl/libxl_exec.c  Tue Jan 12 07:05:22 2010 +0000
+++ b/tools/libxl/libxl_exec.c  Tue Jan 12 07:06:12 2010 +0000
@@ -100,8 +100,7 @@ int libxl_spawn_spawn(struct libxl_ctx *
 int libxl_spawn_spawn(struct libxl_ctx *ctx,
                       libxl_device_model_starting *starting,
                       const char *what,
-                      void (*intermediate_hook)(struct libxl_ctx *ctx,
-                                                void *for_spawn,
+                      void (*intermediate_hook)(void *for_spawn,
                                                 pid_t innerchild))
 {
     pid_t child, got;
@@ -127,18 +126,19 @@ int libxl_spawn_spawn(struct libxl_ctx *
 
     /* we are now the intermediate process */
 
-    child = libxl_fork(ctx);
-    if (!child) return 0; /* caller runs child code */
-    if (child < 0) exit(255);
-
-    intermediate_hook(ctx, starting, child);
+    child = fork();
+    if (child == -1)
+        exit(255);
+    if (!child)
+        return 0; /* caller runs child code */
+
+    intermediate_hook(starting, child);
 
     if (!for_spawn) _exit(0); /* just detach then */
 
     got = call_waitpid(ctx->waitpid_instead, child, &status, 0);
     assert(got == child);
 
-    libxl_report_child_exitstatus(ctx, what, child, status);
     _exit(WIFEXITED(status) ? WEXITSTATUS(status) :
           WIFSIGNALED(status) && WTERMSIG(status) < 127
           ? WTERMSIG(status)+128 : -1);
diff -r da6cddd20000 -r 675443b02c53 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h      Tue Jan 12 07:05:22 2010 +0000
+++ b/tools/libxl/libxl_internal.h      Tue Jan 12 07:06:12 2010 +0000
@@ -181,9 +181,7 @@ int libxl_spawn_spawn(struct libxl_ctx *
 int libxl_spawn_spawn(struct libxl_ctx *ctx,
                       libxl_device_model_starting *starting,
                       const char *what,
-                      void (*intermediate_hook)(struct libxl_ctx *ctx,
-                                                void *for_spawn,
-                                                pid_t innerchild));
+                      void (*intermediate_hook)(void *for_spawn, pid_t 
innerchild));
   /* Logs errors.  A copy of "what" is taken.  Return values:
    *  < 0   error, for_spawn need not be detached
    *   +1   caller is now the inner child, should probably call libxl_exec

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] libxenlight: remove ctx dangerously passed to children, Xen patchbot-unstable <=