Author: jamie
Date: Mon Aug 31 14:13:45 2009
New Revision: 196699
URL: http://svn.freebsd.org/changeset/base/196699

Log:
  MFC r196592:
    Fix a LOR between allprison_lock and vnode locks by releasing
    allprison_lock before releasing a prison's root vnode.
  
  PR:           kern/138004
  Reviewed by:  kib
  Approved by:  re (rwatson), bz (mentor)

Modified:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/kern/kern_jail.c

Modified: stable/8/sys/kern/kern_jail.c
==============================================================================
--- stable/8/sys/kern/kern_jail.c       Mon Aug 31 14:06:59 2009        
(r196698)
+++ stable/8/sys/kern/kern_jail.c       Mon Aug 31 14:13:45 2009        
(r196699)
@@ -2453,7 +2453,7 @@ prison_deref(struct prison *pr, int flag
                ppr = pr->pr_parent;
                for (tpr = ppr; tpr != NULL; tpr = tpr->pr_parent)
                        tpr->pr_childcount--;
-               sx_downgrade(&allprison_lock);
+               sx_xunlock(&allprison_lock);
 
 #ifdef VIMAGE
                if (pr->pr_vnet != ppr->pr_vnet)
@@ -2479,7 +2479,7 @@ prison_deref(struct prison *pr, int flag
                /* Removing a prison frees a reference on its parent. */
                pr = ppr;
                mtx_lock(&pr->pr_mtx);
-               flags = PD_DEREF | PD_LIST_SLOCKED;
+               flags = PD_DEREF;
        }
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to