diff -r 928aeea6ee26 stonithd.c
--- a/stonithd.c	Tue Sep 09 16:04:47 2008 +0900
+++ b/stonithd.c	Tue Sep 09 16:05:13 2008 +0900
@@ -2380,6 +2380,7 @@ stonith_operate_locally( stonith_ops_t *
 
 	/* now in child process */
 	/* this operation may be on block status */
+	setpgid(0,0);
 	exit(stonith_req_reset(st_obj, st_op->optype, 
 				      g_strdup(st_op->node_name)));
 }
@@ -2530,7 +2531,7 @@ stonithop_timeout(gpointer data)
 	/* Kill the possible child process forked for this operation */
 	if (orig_key!=NULL && *orig_key > 0 && CL_PID_EXISTS(*orig_key)) {
 		return_to_orig_privs();
-		CL_KILL(*orig_key, SIGKILL);	
+		CL_KILL(-(*orig_key), SIGKILL);	
 		return_to_dropped_privs();
 	}
 
@@ -2958,6 +2959,7 @@ probe_status:
 
 	/* Now in the child process */
 	/* Need to distiguish the exit code more carefully */
+	setpgid(0,0);
 	if ( S_OK != stonith_get_status(stonith_obj) ) {
 		exit(EXECRA_UNKNOWN_ERROR);
 	}
@@ -3212,6 +3214,7 @@ stonithRA_stop( stonithRA_ops_t * ra_op,
                 return pid;
         }
 	
+	setpgid(0,0);
 	/* in child process */
 	exit(0);
 }
@@ -3259,6 +3262,7 @@ stonithRA_monitor( stonithRA_ops_t * ra_
 
 	/* Go here the child */
 	/* When the resource is not started... */
+	setpgid(0,0);
 	if (child_exitcode == EXECRA_NOT_RUNNING) {
 		stonithd_log2(LOG_DEBUG, "stonithRA_monitor: child exit, "
 				"exitcode: EXECRA_NOT_RUNNING.");
