From 61670a01746859e0ec8029918db323aa33e468f8 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 6 Jun 2005 15:35:09 +0000 Subject: [PATCH] Add some missing #include's from the last commit. --- sys/vfs/gnu/ext2fs/ext2_linux_balloc.c | 3 ++- sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c | 3 ++- sys/vfs/gnu/ext2fs/ext2_vfsops.c | 3 ++- sys/vfs/gnu/ext2fs/ext2_vnops.c | 3 ++- sys/vfs/smbfs/smbfs_node.c | 8 ++++---- sys/vfs/smbfs/smbfs_node.h | 3 ++- sys/vfs/smbfs/smbfs_vfsops.c | 28 +++++++++++++++++--------- sys/vfs/smbfs/smbfs_vnops.c | 7 ++++++- 8 files changed, 38 insertions(+), 20 deletions(-) diff --git a/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c b/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c index 0ca14ac9ae..a090c0bad9 100644 --- a/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c +++ b/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c @@ -5,7 +5,7 @@ * University of Utah, Department of Computer Science * * $FreeBSD: src/sys/gnu/ext2fs/ext2_linux_balloc.c,v 1.11.2.3 2001/08/14 18:03:19 gallatin Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c,v 1.4 2003/08/07 21:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c,v 1.5 2005/06/06 15:35:06 dillon Exp $ */ /* * linux/fs/ext2/balloc.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include diff --git a/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c b/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c index a2aaef5e7a..630756be9c 100644 --- a/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c +++ b/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c @@ -5,7 +5,7 @@ * University of Utah, Department of Computer Science * * $FreeBSD: src/sys/gnu/ext2fs/ext2_linux_ialloc.c,v 1.13.2.2 2001/08/14 18:03:19 gallatin Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c,v 1.5 2005/06/06 15:09:37 drhodus Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c,v 1.6 2005/06/06 15:35:06 dillon Exp $ */ /* * linux/fs/ext2/ialloc.c @@ -46,6 +46,7 @@ #include "fs.h" #include #include +#include #ifdef __i386__ #include "i386-bitops.h" diff --git a/sys/vfs/gnu/ext2fs/ext2_vfsops.c b/sys/vfs/gnu/ext2fs/ext2_vfsops.c index 043703ca39..613e17e9d4 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vfsops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vfsops.c @@ -38,7 +38,7 @@ * * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vfsops.c,v 1.63.2.7 2002/07/01 00:18:51 iedowse Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.28 2005/04/19 17:54:46 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.29 2005/06/06 15:35:06 dillon Exp $ */ #include "opt_quota.h" @@ -57,6 +57,7 @@ #include #include #include +#include #include #include diff --git a/sys/vfs/gnu/ext2fs/ext2_vnops.c b/sys/vfs/gnu/ext2fs/ext2_vnops.c index 4985837a26..d6a3217e8b 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vnops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vnops.c @@ -44,7 +44,7 @@ * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * @(#)ext2_vnops.c 8.7 (Berkeley) 2/3/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vnops.c,v 1.51.2.2 2003/01/02 17:26:18 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.21 2005/06/06 15:09:37 drhodus Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.22 2005/06/06 15:35:06 dillon Exp $ */ #include "opt_quota.h" @@ -67,6 +67,7 @@ #include #include #include +#include #include #include diff --git a/sys/vfs/smbfs/smbfs_node.c b/sys/vfs/smbfs/smbfs_node.c index a383f09d92..71b1632751 100644 --- a/sys/vfs/smbfs/smbfs_node.c +++ b/sys/vfs/smbfs/smbfs_node.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_node.c,v 1.2.2.3 2003/01/17 08:20:26 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_node.c,v 1.16 2004/12/17 00:18:35 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_node.c,v 1.17 2005/06/06 15:35:09 dillon Exp $ */ #include #include @@ -346,16 +346,16 @@ smbfs_inactive(struct vop_inactive_args *ap) struct smb_cred scred; int error; - KKASSERT(td->td_proc); - cred = td->td_proc->p_ucred; - SMBVDEBUG("%s: %d\n", VTOSMB(vp)->n_name, vp->v_usecount); if (np->n_opencount) { error = smbfs_vinvalbuf(vp, V_SAVE, td, 1); + cred = np->n_cached_cred; + np->n_cached_cred = NULL; smb_makescred(&scred, td, cred); error = smbfs_smb_close(np->n_mount->sm_share, np->n_fid, &np->n_mtime, &scred); np->n_opencount = 0; + crfree(cred); } return (0); } diff --git a/sys/vfs/smbfs/smbfs_node.h b/sys/vfs/smbfs/smbfs_node.h index d1ffca2eed..1ea2399675 100644 --- a/sys/vfs/smbfs/smbfs_node.h +++ b/sys/vfs/smbfs/smbfs_node.h @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_node.h,v 1.1.2.2 2003/01/17 08:20:26 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_node.h,v 1.4 2004/08/28 19:02:28 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_node.h,v 1.5 2005/06/06 15:35:09 dillon Exp $ */ #ifndef _FS_SMBFS_NODE_H_ #define _FS_SMBFS_NODE_H_ @@ -61,6 +61,7 @@ struct smbnode { long n_ino; int n_dosattr; int n_opencount; + struct ucred *n_cached_cred; /* cred used to open file */ u_int16_t n_fid; /* file handle */ int n_rwstate; /* granted access mode */ u_char n_nmlen; diff --git a/sys/vfs/smbfs/smbfs_vfsops.c b/sys/vfs/smbfs/smbfs_vfsops.c index bb40cd8150..8f4f11ef23 100644 --- a/sys/vfs/smbfs/smbfs_vfsops.c +++ b/sys/vfs/smbfs/smbfs_vfsops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vfsops.c,v 1.2.2.5 2003/01/17 08:20:26 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.20 2005/04/20 17:01:56 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.21 2005/06/06 15:35:09 dillon Exp $ */ #include "opt_netsmb.h" #ifndef NETSMB @@ -144,8 +144,10 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td) int error; char *pc, *pe; - KKASSERT(td->td_proc); - cred = td->td_proc->p_ucred; + if (td->td_proc) + cred = td->td_proc->p_ucred; + else + cred = proc0.p_ucred; if (data == NULL) { printf("missing data argument\n"); @@ -254,8 +256,10 @@ smbfs_unmount(struct mount *mp, int mntflags, struct thread *td) struct ucred *cred; int error, flags; - KKASSERT(td->td_proc); - cred = td->td_proc->p_ucred; + if (td->td_proc) + cred = td->td_proc->p_ucred; + else + cred = proc0.p_ucred; SMBVDEBUG("smbfs_unmount: flags=%04x\n", mntflags); flags = 0; @@ -307,9 +311,6 @@ smbfs_root(struct mount *mp, struct vnode **vpp) struct smb_cred scred; int error; - KKASSERT(td->td_proc); - cred = td->td_proc->p_ucred; - if (smp == NULL) { SMBERROR("smp == NULL (bug in umount)\n"); return EINVAL; @@ -318,6 +319,11 @@ smbfs_root(struct mount *mp, struct vnode **vpp) *vpp = SMBTOV(smp->sm_root); return vget(*vpp, LK_EXCLUSIVE | LK_RETRY, td); } + if (td->td_proc) + cred = td->td_proc->p_ucred; + else + cred = proc0.p_ucred; + smb_makescred(&scred, td, cred); error = smbfs_smb_lookup(NULL, NULL, 0, &fattr, &scred); if (error) @@ -388,8 +394,10 @@ smbfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td) struct ucred *cred; int error = 0; - KKASSERT(td->td_proc); - cred = td->td_proc->p_ucred; + if (td->td_proc) + cred = td->td_proc->p_ucred; + else + cred = proc0.p_ucred; if (np == NULL) return EINVAL; diff --git a/sys/vfs/smbfs/smbfs_vnops.c b/sys/vfs/smbfs/smbfs_vnops.c index 55e86596fb..5995612012 100644 --- a/sys/vfs/smbfs/smbfs_vnops.c +++ b/sys/vfs/smbfs/smbfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vnops.c,v 1.2.2.8 2003/04/04 08:57:23 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.22 2005/02/15 08:32:18 joerg Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.23 2005/06/06 15:35:09 dillon Exp $ */ #include #include @@ -178,6 +178,8 @@ smbfs_open(struct vop_open_args *ap) return EACCES; } if (vp->v_type == VDIR) { + if (np->n_opencount == 0) + np->n_cached_cred = crhold(ap->a_cred); np->n_opencount++; return 0; } @@ -216,6 +218,7 @@ smbfs_open(struct vop_open_args *ap) error = smbfs_smb_open(np, accmode, &scred); } if (!error) { + np->n_cached_cred = crhold(ap->a_cred); np->n_opencount++; } smbfs_attr_cacheremove(vp); @@ -258,6 +261,8 @@ smbfs_closel(struct vop_close_args *ap) error = smbfs_smb_close(np->n_mount->sm_share, np->n_fid, &np->n_mtime, &scred); } + crfree(np->n_cached_cred); + np->n_cached_cred = NULL; smbfs_attr_cacheremove(vp); return error; } -- 2.41.0