Module Name: src Committed By: pooka Date: Mon Sep 7 12:52:54 UTC 2009
Modified Files: src/sys/fs/smbfs: smbfs_vfsops.c Log Message: set mntfromname in a less creative and historic fashion To generate a diff of this commit: cvs rdiff -u -r1.88 -r1.89 src/sys/fs/smbfs/smbfs_vfsops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/fs/smbfs/smbfs_vfsops.c diff -u src/sys/fs/smbfs/smbfs_vfsops.c:1.88 src/sys/fs/smbfs/smbfs_vfsops.c:1.89 --- src/sys/fs/smbfs/smbfs_vfsops.c:1.88 Thu Jul 2 16:17:52 2009 +++ src/sys/fs/smbfs/smbfs_vfsops.c Mon Sep 7 12:52:53 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: smbfs_vfsops.c,v 1.88 2009/07/02 16:17:52 njoly Exp $ */ +/* $NetBSD: smbfs_vfsops.c,v 1.89 2009/09/07 12:52:53 pooka Exp $ */ /* * Copyright (c) 2000-2001, Boris Popov @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: smbfs_vfsops.c,v 1.88 2009/07/02 16:17:52 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: smbfs_vfsops.c,v 1.89 2009/09/07 12:52:53 pooka Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -161,6 +161,7 @@ struct smb_share *ssp = NULL; struct smb_cred scred; struct proc *p; + char *fromname; int error; if (*data_len < sizeof *args) @@ -185,17 +186,25 @@ return EINVAL; } - error = set_statvfs_info(path, UIO_USERSPACE, NULL, UIO_USERSPACE, - mp->mnt_op->vfs_name, mp, l); - if (error) - return error; - smb_makescred(&scred, l, l->l_cred); error = smb_dev2share(args->dev_fd, SMBM_EXEC, &scred, &ssp); if (error) return error; smb_share_unlock(ssp); /* keep ref, but unlock */ vcp = SSTOVC(ssp); + + fromname = kmem_zalloc(MNAMELEN, KM_SLEEP); + snprintf(fromname, MNAMELEN, + "//%...@%s/%s", vcp->vc_username, vcp->vc_srvname, ssp->ss_name); + error = set_statvfs_info(path, UIO_USERSPACE, fromname, UIO_USERSPACE, + mp->mnt_op->vfs_name, mp, l); + kmem_free(fromname, MNAMELEN); + if (error) { + smb_share_lock(ssp); + smb_share_put(ssp, &scred); + return error; + } + mp->mnt_stat.f_iosize = vcp->vc_txmax; mp->mnt_stat.f_namemax = (vcp->vc_hflags2 & SMB_FLAGS2_KNOWS_LONG_NAMES) ? 255 : 12; @@ -216,10 +225,6 @@ smp->sm_args.dir_mode = (smp->sm_args.dir_mode & (S_IRWXU|S_IRWXG|S_IRWXO)) | S_IFDIR; - memset(mp->mnt_stat.f_mntfromname, 0, MNAMELEN); - snprintf(mp->mnt_stat.f_mntfromname, MNAMELEN, - "//%...@%s/%s", vcp->vc_username, vcp->vc_srvname, ssp->ss_name); - vfs_getnewfsid(mp); return (0); }