diff options
author | adrian <adrian@FreeBSD.org> | 2001-03-01 21:00:17 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2001-03-01 21:00:17 +0000 |
commit | 401895533496c6f7943c0cadf487c2cfa8f852ac (patch) | |
tree | 19b63a29b1f18d2efdee5765c5bffd371838dd1e /sys/nfsclient/nfs_vfsops.c | |
parent | 845eeac4fc47466824d871b49fc54af4c3812e09 (diff) | |
download | FreeBSD-src-401895533496c6f7943c0cadf487c2cfa8f852ac.zip FreeBSD-src-401895533496c6f7943c0cadf487c2cfa8f852ac.tar.gz |
Reviewed by: jlemon
An initial tidyup of the mount() syscall and VFS mount code.
This code replaces the earlier work done by jlemon in an attempt to
make linux_mount() work.
* the guts of the mount work has been moved into vfs_mount().
* move `type', `path' and `flags' from being userland variables into being
kernel variables in vfs_mount(). `data' remains a pointer into
userspace.
* Attempt to verify the `type' and `path' strings passed to vfs_mount()
aren't too long.
* rework mount() and linux_mount() to take the userland parameters
(besides data, as mentioned) and pass kernel variables to vfs_mount().
(linux_mount() already did this, I've just tidied it up a little more.)
* remove the copyin*() stuff for `path'. `data' still requires copyin*()
since its a pointer into userland.
* set `mount->mnt_statf_mntonname' in vfs_mount() rather than in each
filesystem. This variable is generally initialised with `path', and
each filesystem can override it if they want to.
* NOTE: f_mntonname is intiailised with "/" in the case of a root mount.
Diffstat (limited to 'sys/nfsclient/nfs_vfsops.c')
-rw-r--r-- | sys/nfsclient/nfs_vfsops.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c index e839d8b..b22a855 100644 --- a/sys/nfsclient/nfs_vfsops.c +++ b/sys/nfsclient/nfs_vfsops.c @@ -764,7 +764,7 @@ nfs_mount(mp, path, data, ndp, p) struct nfs_args args; struct sockaddr *nam; struct vnode *vp; - char pth[MNAMELEN], hst[MNAMELEN]; + char hst[MNAMELEN]; size_t len; u_char nfh[NFSX_V3FHMAX]; @@ -810,10 +810,6 @@ nfs_mount(mp, path, data, ndp, p) error = copyin((caddr_t)args.fh, (caddr_t)nfh, args.fhsize); if (error) return (error); - error = copyinstr(path, pth, MNAMELEN-1, &len); - if (error) - return (error); - bzero(&pth[len], MNAMELEN - len); error = copyinstr(args.hostname, hst, MNAMELEN-1, &len); if (error) return (error); @@ -823,7 +819,7 @@ nfs_mount(mp, path, data, ndp, p) if (error) return (error); args.fh = nfh; - error = mountnfs(&args, mp, nam, pth, hst, &vp); + error = mountnfs(&args, mp, nam, path, hst, &vp); return (error); } |