Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 May 2009 01:25:05 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 161798 for review
Message-ID:  <200905090125.n491P505056773@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=161798

Change 161798 by zec@zec_tpx32 on 2009/05/09 01:24:23

	Add an exception to allow for a process running in one vimage
	to receive signals from processes running in child vimages that
	it is waiting on, but only when the processes in the child
	vimage is exiting.

Affected files ...

.. //depot/projects/vimage-commit2/src/sys/kern/kern_prot.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/kern/kern_vimage.c#34 edit
.. //depot/projects/vimage-commit2/src/sys/sys/vimage.h#58 edit

Differences ...

==== //depot/projects/vimage-commit2/src/sys/kern/kern_prot.c#9 (text+ko) ====

@@ -1756,7 +1756,11 @@
 
 	KASSERT(td == curthread, ("%s: td not curthread", __func__));
 	PROC_LOCK_ASSERT(p, MA_OWNED);
-	if ((error = prison_check(td->td_ucred, p->p_ucred)))
+	if (
+#ifdef VIMAGE
+	    !vi_child_of(TD_TO_VIMAGE(td), P_TO_VIMAGE(p)) &&
+#endif
+	    (error = prison_check(td->td_ucred, p->p_ucred)))
 		return (error);
 #ifdef MAC
 	if ((error = mac_proc_check_wait(td->td_ucred, p)))

==== //depot/projects/vimage-commit2/src/sys/kern/kern_vimage.c#34 (text+ko) ====

@@ -101,7 +101,7 @@
  * Userspace interfaces.
  */
 
-static int
+int
 vi_child_of(struct vimage *parent, struct vimage *child)
 {
 	if (child == parent)

==== //depot/projects/vimage-commit2/src/sys/sys/vimage.h#58 (text+ko) ====

@@ -158,6 +158,7 @@
 int	vi_symlookup(struct kld_sym_lookup *, char *);
 int	vi_td_ioctl(u_long, struct vi_req *, struct thread *);
 int	vi_if_move(struct vi_req *, struct ifnet *, struct vimage *);
+int	vi_child_of(struct vimage *, struct vimage *);
 void	if_reassign_common(struct ifnet *, struct vnet *, const char *);
 void	vnet_mod_register(const struct vnet_modinfo *);
 void	vnet_mod_register_multi(const struct vnet_modinfo *, void *, char *);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905090125.n491P505056773>