svn commit: r197584 - head/sys/rpc/rpcsec_gss
Jamie Gritton
jamie at FreeBSD.org
Mon Sep 28 19:46:20 UTC 2009
Robert Watson wrote:
>
> On Mon, 28 Sep 2009, John Baldwin wrote:
>
>> ==============================================================================
>>
>>> --- 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.
>
> In the long-term, explicit references to proc0, prison0, thread0,
> filedesc0, ... all make me rather nervous. I'd rather that all these
> things were linked to either the credentials of the file system mount,
> the user thread, or perhaps gssd in some cases. From the perspective if
> virtualization, the file system mount credential seems the most likely
> candidate.
Do we want some better standard for creating these daemon creds than
hand-rolling them from crget? Both NFS export and GSS seems to have a
user and group list passed in, so it's more than a matter of using the
current cred - perhaps some superset of change_ruid.
- Jamie
More information about the svn-src-head
mailing list