Subject: Re: CVS commit: src/sys/nfs
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Christos Zoulas <christos@zoulas.com>
List: source-changes
Date: 07/08/2005 08:53:49
On Jul 8, 12:36pm, yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi) wrote:
-- Subject: Re: CVS commit: src/sys/nfs
| > Module Name: src
| > Committed By: christos
| > Date: Thu Jul 7 14:26:37 UTC 2005
| >
| > Modified Files:
| > src/sys/nfs: nfs_bio.c
| >
| > Log Message:
| > Back to using curproc in the VLNK case when uiop->uio_procp == NULL,
| > and explain why we need to.
|
| why do you want to use uio_procp->p_ucred here?
|
| uio_procp specifies an address space, not a requester.
| i don't understand what an address space's credential means.
The whole structure of the code is stupid. We go from:
nfs_readlink -> nfs_bioread -> nfs_doio -> nfs_doio_read -> nfs_readlinkrpc
|
\-> nfs_readlinkrpc
We have the proper credentials here in the beginning of the call chain,
but we stupidly drop them between nfs_bioread and nfs_doio. The proper
fix is to pass cred down the chain instead of relying on curproc.
It would be nice to have the notion of "who are we doing the i/o on behalf
of" in uio, but we don't, and yes I agree uio_procp->p_ucred is not it
(since in the UIO_SYSSPACE case uio_procp is NULL).
christos
christos