svn commit: r211826 - head/sys/fs/unionfs

Edward Tomasz Napierala trasz at FreeBSD.org
Wed Aug 25 21:32:09 UTC 2010


Author: trasz
Date: Wed Aug 25 21:32:08 2010
New Revision: 211826
URL: http://svn.freebsd.org/changeset/base/211826

Log:
  Revert r210194, adding a comment explaining why calls to chgproccnt()
  in unionfs are actually needed.  I have a better fix in trasz_hrl p4 branch,
  but now is not a good moment to commit it.
  
  Reported by:	Alex Kozlov

Modified:
  head/sys/fs/unionfs/union_subr.c

Modified: head/sys/fs/unionfs/union_subr.c
==============================================================================
--- head/sys/fs/unionfs/union_subr.c	Wed Aug 25 21:13:23 2010	(r211825)
+++ head/sys/fs/unionfs/union_subr.c	Wed Aug 25 21:32:08 2010	(r211826)
@@ -775,6 +775,11 @@ unionfs_mkshadowdir(struct unionfs_mount
 	/* Authority change to root */
 	rootinfo = uifind((uid_t)0);
 	cred = crdup(cnp->cn_cred);
+	/*
+	 * The calls to chgproccnt() are needed to compensate for change_ruid()
+	 * calling chgproccnt().
+	 */
+	chgproccnt(cred->cr_ruidinfo, 1, 0);
 	change_euid(cred, rootinfo);
 	change_ruid(cred, rootinfo);
 	change_svuid(cred, (uid_t)0);
@@ -824,6 +829,7 @@ unionfs_mkshadowdir_free_out:
 
 unionfs_mkshadowdir_abort:
 	cnp->cn_cred = credbk;
+	chgproccnt(cred->cr_ruidinfo, -1, 0);
 	crfree(cred);
 
 	return (error);


More information about the svn-src-all mailing list