svn commit: r197584 - head/sys/rpc/rpcsec_gss

John Baldwin jhb at freebsd.org
Mon Sep 28 19:11:33 UTC 2009


On Monday 28 September 2009 2:55:29 pm Jamie Gritton wrote:
> Author: jamie
> Date: Mon Sep 28 18:55:29 2009
> New Revision: 197584
> URL: http://svn.freebsd.org/changeset/base/197584
> 
> Log:
>   Set the prison in NFS anon and GSS SVC creds (as I indended to in 
r197581).
>   
>   Reviewed by:	marcel
> 
> Modified:
>   head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c
> 
> Modified: head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c
> 
==============================================================================
> --- head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c	Mon Sep 28 18:54:26 2009	
(r197583)
> +++ head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c	Mon Sep 28 18:55:29 2009	
(r197584)
> @@ -449,6 +449,8 @@ rpc_gss_svc_getcred(struct svc_req *req,
>  	cr->cr_uid = cr->cr_ruid = cr->cr_svuid = uc->uid;
>  	cr->cr_rgid = cr->cr_svgid = uc->gid;
>  	crsetgroups(cr, uc->gidlen, uc->gidlist);
> +	cr->cr_prison = &prison0;
> +	prison_hold(cr->cr_prison);
>  	*crp = crhold(cr);
>  
>  	return (TRUE);

FYI, it would be nice if prison_hold() returned a pointer to the prison as you 
can then do what crhold() does above:

	cr->cr_prison = prison_hold(&prison0);

I prefer combining the refcount and assignment into one step with the goal of 
avoiding outright assignments that don't go via foo_hold() or fooref() for 
refcounted objects.

-- 
John Baldwin


More information about the svn-src-all mailing list