Module Name:    src
Committed By:   elad
Date:           Tue Jun 23 19:36:40 UTC 2009

Modified Files:
        src/sys/fs/adosfs: advnops.c
        src/sys/fs/cd9660: cd9660_vnops.c
        src/sys/fs/efs: efs_vnops.c
        src/sys/fs/filecorefs: filecore_vnops.c
        src/sys/fs/hfs: hfs_vnops.c
        src/sys/fs/msdosfs: msdosfs_vnops.c
        src/sys/fs/ntfs: ntfs_vnops.c
        src/sys/fs/ptyfs: ptyfs_vnops.c
        src/sys/fs/smbfs: smbfs_vnops.c
        src/sys/fs/sysvbfs: sysvbfs_vnops.c
        src/sys/fs/tmpfs: tmpfs_vnops.c
        src/sys/fs/udf: udf_vnops.c
        src/sys/kern: sys_mqueue.c vfs_subr.c
        src/sys/miscfs/genfs: genfs.h genfs_vnops.c
        src/sys/miscfs/kernfs: kernfs_vnops.c
        src/sys/miscfs/procfs: procfs_vnops.c
        src/sys/nfs: nfs_vnops.c
        src/sys/ufs/ext2fs: ext2fs_vnops.c
        src/sys/ufs/ufs: ufs_vnops.c

Log Message:
Move the implementation of vaccess() to genfs_can_access(), in line with
the other routines of the same spirit.

Adjust file-system code to use it.

Keep vaccess() for KPI compatibility and to keep element of least
surprise. A "diagnostic" message warning that vaccess() is deprecated will
be printed when it's used (obviously, only in DIAGNOSTIC kernels).

No objections on tech-kern@:

        http://mail-index.netbsd.org/tech-kern/2009/06/21/msg005310.html


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/fs/adosfs/advnops.c
cvs rdiff -u -r1.36 -r1.37 src/sys/fs/cd9660/cd9660_vnops.c
cvs rdiff -u -r1.17 -r1.18 src/sys/fs/efs/efs_vnops.c
cvs rdiff -u -r1.30 -r1.31 src/sys/fs/filecorefs/filecore_vnops.c
cvs rdiff -u -r1.13 -r1.14 src/sys/fs/hfs/hfs_vnops.c
cvs rdiff -u -r1.59 -r1.60 src/sys/fs/msdosfs/msdosfs_vnops.c
cvs rdiff -u -r1.43 -r1.44 src/sys/fs/ntfs/ntfs_vnops.c
cvs rdiff -u -r1.30 -r1.31 src/sys/fs/ptyfs/ptyfs_vnops.c
cvs rdiff -u -r1.68 -r1.69 src/sys/fs/smbfs/smbfs_vnops.c
cvs rdiff -u -r1.21 -r1.22 src/sys/fs/sysvbfs/sysvbfs_vnops.c
cvs rdiff -u -r1.59 -r1.60 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.43 -r1.44 src/sys/fs/udf/udf_vnops.c
cvs rdiff -u -r1.18 -r1.19 src/sys/kern/sys_mqueue.c
cvs rdiff -u -r1.379 -r1.380 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.26 -r1.27 src/sys/miscfs/genfs/genfs.h
cvs rdiff -u -r1.171 -r1.172 src/sys/miscfs/genfs/genfs_vnops.c
cvs rdiff -u -r1.136 -r1.137 src/sys/miscfs/kernfs/kernfs_vnops.c
cvs rdiff -u -r1.174 -r1.175 src/sys/miscfs/procfs/procfs_vnops.c
cvs rdiff -u -r1.278 -r1.279 src/sys/nfs/nfs_vnops.c
cvs rdiff -u -r1.86 -r1.87 src/sys/ufs/ext2fs/ext2fs_vnops.c
cvs rdiff -u -r1.177 -r1.178 src/sys/ufs/ufs/ufs_vnops.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/adosfs/advnops.c
diff -u src/sys/fs/adosfs/advnops.c:1.33 src/sys/fs/adosfs/advnops.c:1.34
--- src/sys/fs/adosfs/advnops.c:1.33	Sat Mar 14 21:04:23 2009
+++ src/sys/fs/adosfs/advnops.c	Tue Jun 23 19:36:38 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: advnops.c,v 1.33 2009/03/14 21:04:23 dsl Exp $	*/
+/*	$NetBSD: advnops.c,v 1.34 2009/06/23 19:36:38 elad Exp $	*/
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.33 2009/03/14 21:04:23 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.34 2009/06/23 19:36:38 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -786,8 +786,9 @@
 			break;
 		}
 	}
-	error = vaccess(sp->a_vp->v_type, adunixprot(ap->adprot) & ap->amp->mask,
-	    ap->uid, ap->gid, sp->a_mode, sp->a_cred);
+	error = genfs_can_access(sp->a_vp->v_type,
+	    adunixprot(ap->adprot) & ap->amp->mask, ap->uid, ap->gid,
+	    sp->a_mode, sp->a_cred);
 #ifdef ADOSFS_DIAGNOSTIC
 	printf(" %d)", error);
 #endif

Index: src/sys/fs/cd9660/cd9660_vnops.c
diff -u src/sys/fs/cd9660/cd9660_vnops.c:1.36 src/sys/fs/cd9660/cd9660_vnops.c:1.37
--- src/sys/fs/cd9660/cd9660_vnops.c:1.36	Wed Dec 17 20:51:35 2008
+++ src/sys/fs/cd9660/cd9660_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660_vnops.c,v 1.36 2008/12/17 20:51:35 cegger Exp $	*/
+/*	$NetBSD: cd9660_vnops.c,v 1.37 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.36 2008/12/17 20:51:35 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.37 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -116,7 +116,7 @@
 		}
 	}
 
-	return (vaccess(vp->v_type, ip->inode.iso_mode & ALLPERMS,
+	return (genfs_can_access(vp->v_type, ip->inode.iso_mode & ALLPERMS,
 	    ip->inode.iso_uid, ip->inode.iso_gid, ap->a_mode, ap->a_cred));
 }
 

Index: src/sys/fs/efs/efs_vnops.c
diff -u src/sys/fs/efs/efs_vnops.c:1.17 src/sys/fs/efs/efs_vnops.c:1.18
--- src/sys/fs/efs/efs_vnops.c:1.17	Mon Dec  1 14:34:50 2008
+++ src/sys/fs/efs/efs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: efs_vnops.c,v 1.17 2008/12/01 14:34:50 pooka Exp $	*/
+/*	$NetBSD: efs_vnops.c,v 1.18 2009/06/23 19:36:40 elad Exp $	*/
 
 /*
  * Copyright (c) 2006 Stephen M. Rumble <rum...@ephemeral.org>
@@ -17,7 +17,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.17 2008/12/01 14:34:50 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.18 2009/06/23 19:36:40 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -149,8 +149,8 @@
 	if ((ap->a_mode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY))
 		return (EROFS);
 
-	return (vaccess(vp->v_type, eip->ei_mode, eip->ei_uid, eip->ei_gid,
-	    ap->a_mode, ap->a_cred));
+	return (genfs_can_access(vp->v_type, eip->ei_mode, eip->ei_uid,
+	    eip->ei_gid, ap->a_mode, ap->a_cred));
 }
 
 /*

Index: src/sys/fs/filecorefs/filecore_vnops.c
diff -u src/sys/fs/filecorefs/filecore_vnops.c:1.30 src/sys/fs/filecorefs/filecore_vnops.c:1.31
--- src/sys/fs/filecorefs/filecore_vnops.c:1.30	Sat Mar 14 21:04:23 2009
+++ src/sys/fs/filecorefs/filecore_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecore_vnops.c,v 1.30 2009/03/14 21:04:23 dsl Exp $	*/
+/*	$NetBSD: filecore_vnops.c,v 1.31 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (c) 1994 The Regents of the University of California.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: filecore_vnops.c,v 1.30 2009/03/14 21:04:23 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: filecore_vnops.c,v 1.31 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -124,7 +124,7 @@
 		}
 	}
 
-	return (vaccess(vp->v_type, filecore_mode(ip),
+	return (genfs_can_access(vp->v_type, filecore_mode(ip),
 	    fcmp->fc_uid, fcmp->fc_gid, ap->a_mode, ap->a_cred));
 }
 

Index: src/sys/fs/hfs/hfs_vnops.c
diff -u src/sys/fs/hfs/hfs_vnops.c:1.13 src/sys/fs/hfs/hfs_vnops.c:1.14
--- src/sys/fs/hfs/hfs_vnops.c:1.13	Wed Dec 17 20:51:35 2008
+++ src/sys/fs/hfs/hfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: hfs_vnops.c,v 1.13 2008/12/17 20:51:35 cegger Exp $	*/
+/*	$NetBSD: hfs_vnops.c,v 1.14 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2007 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.13 2008/12/17 20:51:35 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.14 2009/06/23 19:36:39 elad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ipsec.h"
@@ -551,7 +551,7 @@
 	if ((error = VOP_GETATTR(ap->a_vp, &va, ap->a_cred)) != 0)
 		return error;
 
-	return vaccess(va.va_type, va.va_mode, va.va_uid, va.va_gid,
+	return genfs_can_access(va.va_type, va.va_mode, va.va_uid, va.va_gid,
 	    ap->a_mode, ap->a_cred);
 }
 

Index: src/sys/fs/msdosfs/msdosfs_vnops.c
diff -u src/sys/fs/msdosfs/msdosfs_vnops.c:1.59 src/sys/fs/msdosfs/msdosfs_vnops.c:1.60
--- src/sys/fs/msdosfs/msdosfs_vnops.c:1.59	Thu May  7 19:30:31 2009
+++ src/sys/fs/msdosfs/msdosfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_vnops.c,v 1.59 2009/05/07 19:30:31 elad Exp $	*/
+/*	$NetBSD: msdosfs_vnops.c,v 1.60 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.59 2009/05/07 19:30:31 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.60 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -251,7 +251,7 @@
 		mode = S_IRWXU|S_IRWXG|S_IRWXO;
 	else
 		mode = S_IRUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH;
-	return (vaccess(ap->a_vp->v_type,
+	return (genfs_can_access(ap->a_vp->v_type,
 	    mode & (vp->v_type == VDIR ? pmp->pm_dirmask : pmp->pm_mask),
 	    pmp->pm_uid, pmp->pm_gid, ap->a_mode, ap->a_cred));
 }

Index: src/sys/fs/ntfs/ntfs_vnops.c
diff -u src/sys/fs/ntfs/ntfs_vnops.c:1.43 src/sys/fs/ntfs/ntfs_vnops.c:1.44
--- src/sys/fs/ntfs/ntfs_vnops.c:1.43	Wed Apr 29 22:33:33 2009
+++ src/sys/fs/ntfs/ntfs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ntfs_vnops.c,v 1.43 2009/04/29 22:33:33 elad Exp $	*/
+/*	$NetBSD: ntfs_vnops.c,v 1.44 2009/06/23 19:36:40 elad Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.43 2009/04/29 22:33:33 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.44 2009/06/23 19:36:40 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -427,7 +427,7 @@
 
 	file_mode = ip->i_mp->ntm_mode | (S_IXUSR|S_IXGRP|S_IXOTH);
 
-	return (vaccess(vp->v_type, file_mode, ip->i_mp->ntm_uid,
+	return (genfs_can_access(vp->v_type, file_mode, ip->i_mp->ntm_uid,
 	    ip->i_mp->ntm_gid, mode, ap->a_cred));
 }
 

Index: src/sys/fs/ptyfs/ptyfs_vnops.c
diff -u src/sys/fs/ptyfs/ptyfs_vnops.c:1.30 src/sys/fs/ptyfs/ptyfs_vnops.c:1.31
--- src/sys/fs/ptyfs/ptyfs_vnops.c:1.30	Thu May  7 19:30:29 2009
+++ src/sys/fs/ptyfs/ptyfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ptyfs_vnops.c,v 1.30 2009/05/07 19:30:29 elad Exp $	*/
+/*	$NetBSD: ptyfs_vnops.c,v 1.31 2009/06/23 19:36:39 elad Exp $	*/
 
 /*
  * Copyright (c) 1993, 1995
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.30 2009/05/07 19:30:29 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.31 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -521,7 +521,7 @@
 	if ((error = VOP_GETATTR(ap->a_vp, &va, ap->a_cred)) != 0)
 		return error;
 
-	return vaccess(va.va_type, va.va_mode,
+	return genfs_can_access(va.va_type, va.va_mode,
 	    va.va_uid, va.va_gid, ap->a_mode, ap->a_cred);
 }
 

Index: src/sys/fs/smbfs/smbfs_vnops.c
diff -u src/sys/fs/smbfs/smbfs_vnops.c:1.68 src/sys/fs/smbfs/smbfs_vnops.c:1.69
--- src/sys/fs/smbfs/smbfs_vnops.c:1.68	Mon Jun 22 21:13:50 2009
+++ src/sys/fs/smbfs/smbfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: smbfs_vnops.c,v 1.68 2009/06/22 21:13:50 njoly Exp $	*/
+/*	$NetBSD: smbfs_vnops.c,v 1.69 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smbfs_vnops.c,v 1.68 2009/06/22 21:13:50 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smbfs_vnops.c,v 1.69 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -197,7 +197,7 @@
 		}
 	}
 
-	return (vaccess(vp->v_type,
+	return (genfs_can_access(vp->v_type,
 	    (vp->v_type == VDIR) ? smp->sm_args.dir_mode : smp->sm_args.file_mode,
 	    smp->sm_args.uid, smp->sm_args.gid,
 	    acc_mode, ap->a_cred));

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.21 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.22
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.21	Wed Nov 26 20:17:33 2008
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.21 2008/11/26 20:17:33 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.22 2009/06/23 19:36:39 elad Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.21 2008/11/26 20:17:33 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.22 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -45,6 +45,8 @@
 #include <sys/kauth.h>
 #include <sys/buf.h>
 
+#include <miscfs/genfs/genfs.h>
+
 #include <fs/sysvbfs/sysvbfs.h>
 #include <fs/sysvbfs/bfs.h>
 
@@ -244,7 +246,7 @@
 	if ((ap->a_mode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY))
 		return EROFS;
 
-	return vaccess(vp->v_type, attr->mode, attr->uid, attr->gid,
+	return genfs_can_access(vp->v_type, attr->mode, attr->uid, attr->gid,
 	    ap->a_mode, ap->a_cred);
 }
 

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.59 src/sys/fs/tmpfs/tmpfs_vnops.c:1.60
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.59	Wed Apr 29 11:01:50 2009
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.59 2009/04/29 11:01:50 pooka Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.60 2009/06/23 19:36:39 elad Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.59 2009/04/29 11:01:50 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.60 2009/06/23 19:36:39 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -54,6 +54,7 @@
 #include <uvm/uvm.h>
 
 #include <miscfs/fifofs/fifo.h>
+#include <miscfs/genfs/genfs.h>
 #include <fs/tmpfs/tmpfs_vnops.h>
 #include <fs/tmpfs/tmpfs.h>
 
@@ -381,7 +382,7 @@
 		goto out;
 	}
 
-	error = vaccess(vp->v_type, node->tn_mode, node->tn_uid,
+	error = genfs_can_access(vp->v_type, node->tn_mode, node->tn_uid,
 	    node->tn_gid, mode, cred);
 
 out:

Index: src/sys/fs/udf/udf_vnops.c
diff -u src/sys/fs/udf/udf_vnops.c:1.43 src/sys/fs/udf/udf_vnops.c:1.44
--- src/sys/fs/udf/udf_vnops.c:1.43	Thu Jun 18 15:51:44 2009
+++ src/sys/fs/udf/udf_vnops.c	Tue Jun 23 19:36:39 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_vnops.c,v 1.43 2009/06/18 15:51:44 reinoud Exp $ */
+/* $NetBSD: udf_vnops.c,v 1.44 2009/06/23 19:36:39 elad Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.43 2009/06/18 15:51:44 reinoud Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.44 2009/06/23 19:36:39 elad Exp $");
 #endif /* not lint */
 
 
@@ -1358,8 +1358,8 @@
 	if ((mode & VWRITE) && (flags & IMMUTABLE))
 		return EPERM;
 
-	/* ask the generic vaccess to advice on security */
-	return vaccess(vp->v_type,
+	/* ask the generic genfs_can_access to advice on security */
+	return genfs_can_access(vp->v_type,
 			vap.va_mode, vap.va_uid, vap.va_gid,
 			mode, cred);
 }

Index: src/sys/kern/sys_mqueue.c
diff -u src/sys/kern/sys_mqueue.c:1.18 src/sys/kern/sys_mqueue.c:1.19
--- src/sys/kern/sys_mqueue.c:1.18	Tue May 26 00:39:14 2009
+++ src/sys/kern/sys_mqueue.c	Tue Jun 23 19:36:38 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_mqueue.c,v 1.18 2009/05/26 00:39:14 rmind Exp $	*/
+/*	$NetBSD: sys_mqueue.c,v 1.19 2009/06/23 19:36:38 elad Exp $	*/
 
 /*
  * Copyright (c) 2007, 2008 Mindaugas Rasiukevicius <rmind at NetBSD org>
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.18 2009/05/26 00:39:14 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.19 2009/06/23 19:36:38 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -71,6 +71,8 @@
 #include <sys/unistd.h>
 #include <sys/vnode.h>
 
+#include <miscfs/genfs/genfs.h>
+
 /* System-wide limits. */
 static u_int			mq_open_max = MQ_OPEN_MAX;
 static u_int			mq_prio_max = MQ_PRIO_MAX;
@@ -428,8 +430,8 @@
 		if (fp->f_flag & FWRITE) {
 			acc_mode |= VWRITE;
 		}
-		if (vaccess(VNON, mq->mq_mode, mq->mq_euid, mq->mq_egid,
-		    acc_mode, l->l_cred)) {
+		if (genfs_can_access(VNON, mq->mq_mode, mq->mq_euid,
+		    mq->mq_egid, acc_mode, l->l_cred)) {
 			error = EACCES;
 			goto exit;
 		}

Index: src/sys/kern/vfs_subr.c
diff -u src/sys/kern/vfs_subr.c:1.379 src/sys/kern/vfs_subr.c:1.380
--- src/sys/kern/vfs_subr.c:1.379	Sat May 16 08:29:53 2009
+++ src/sys/kern/vfs_subr.c	Tue Jun 23 19:36:38 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_subr.c,v 1.379 2009/05/16 08:29:53 yamt Exp $	*/
+/*	$NetBSD: vfs_subr.c,v 1.380 2009/06/23 19:36:38 elad Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008 The NetBSD Foundation, Inc.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.379 2009/05/16 08:29:53 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.380 2009/06/23 19:36:38 elad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_compat_netbsd.h"
@@ -119,6 +119,7 @@
 #include <sys/kthread.h>
 #include <sys/wapbl.h>
 
+#include <miscfs/genfs/genfs.h>
 #include <miscfs/specfs/specdev.h>
 #include <miscfs/syncfs/syncfs.h>
 
@@ -2587,64 +2588,17 @@
 }
 #endif
 
-/*
- * Do the usual access checking.
- * file_mode, uid and gid are from the vnode in question,
- * while acc_mode and cred are from the VOP_ACCESS parameter list
- */
+/* Deprecated. Kept for KPI compatibility. */
 int
 vaccess(enum vtype type, mode_t file_mode, uid_t uid, gid_t gid,
     mode_t acc_mode, kauth_cred_t cred)
 {
-	mode_t mask;
-	int error, ismember;
 
-	/*
-	 * Super-user always gets read/write access, but execute access depends
-	 * on at least one execute bit being set.
-	 */
-	if (kauth_authorize_generic(cred, KAUTH_GENERIC_ISSUSER, NULL) == 0) {
-		if ((acc_mode & VEXEC) && type != VDIR &&
-		    (file_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0)
-			return (EACCES);
-		return (0);
-	}
-
-	mask = 0;
+#ifdef DIAGNOSTIC
+	print("vaccess: deprecated interface used.\n");
+#endif /* DIAGNOSTIC */
 
-	/* Otherwise, check the owner. */
-	if (kauth_cred_geteuid(cred) == uid) {
-		if (acc_mode & VEXEC)
-			mask |= S_IXUSR;
-		if (acc_mode & VREAD)
-			mask |= S_IRUSR;
-		if (acc_mode & VWRITE)
-			mask |= S_IWUSR;
-		return ((file_mode & mask) == mask ? 0 : EACCES);
-	}
-
-	/* Otherwise, check the groups. */
-	error = kauth_cred_ismember_gid(cred, gid, &ismember);
-	if (error)
-		return (error);
-	if (kauth_cred_getegid(cred) == gid || ismember) {
-		if (acc_mode & VEXEC)
-			mask |= S_IXGRP;
-		if (acc_mode & VREAD)
-			mask |= S_IRGRP;
-		if (acc_mode & VWRITE)
-			mask |= S_IWGRP;
-		return ((file_mode & mask) == mask ? 0 : EACCES);
-	}
-
-	/* Otherwise, check everyone else. */
-	if (acc_mode & VEXEC)
-		mask |= S_IXOTH;
-	if (acc_mode & VREAD)
-		mask |= S_IROTH;
-	if (acc_mode & VWRITE)
-		mask |= S_IWOTH;
-	return ((file_mode & mask) == mask ? 0 : EACCES);
+	return genfs_can_access(type, file_mode, uid, gid, acc_mode, cred);
 }
 
 /*

Index: src/sys/miscfs/genfs/genfs.h
diff -u src/sys/miscfs/genfs/genfs.h:1.26 src/sys/miscfs/genfs/genfs.h:1.27
--- src/sys/miscfs/genfs/genfs.h:1.26	Thu May  7 19:30:29 2009
+++ src/sys/miscfs/genfs/genfs.h	Tue Jun 23 19:36:38 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs.h,v 1.26 2009/05/07 19:30:29 elad Exp $	*/
+/*	$NetBSD: genfs.h,v 1.27 2009/06/23 19:36:38 elad Exp $	*/
 
 #ifndef	_MISCFS_GENFS_GENFS_H_
 #define	_MISCFS_GENFS_GENFS_H_
@@ -36,6 +36,8 @@
 int	genfs_renamelock_enter(struct mount *);
 void	genfs_renamelock_exit(struct mount *);
 
+int	genfs_can_access(enum vtype, mode_t, uid_t, gid_t, mode_t,
+	    kauth_cred_t);
 int	genfs_can_chmod(vnode_t *, kauth_cred_t, uid_t, gid_t, mode_t);
 int	genfs_can_chown(vnode_t *, kauth_cred_t, uid_t, gid_t, uid_t, gid_t);
 int	genfs_can_mount(vnode_t *, mode_t, kauth_cred_t);

Index: src/sys/miscfs/genfs/genfs_vnops.c
diff -u src/sys/miscfs/genfs/genfs_vnops.c:1.171 src/sys/miscfs/genfs/genfs_vnops.c:1.172
--- src/sys/miscfs/genfs/genfs_vnops.c:1.171	Thu May  7 19:30:29 2009
+++ src/sys/miscfs/genfs/genfs_vnops.c	Tue Jun 23 19:36:38 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs_vnops.c,v 1.171 2009/05/07 19:30:29 elad Exp $	*/
+/*	$NetBSD: genfs_vnops.c,v 1.172 2009/06/23 19:36:38 elad Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.171 2009/05/07 19:30:29 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.172 2009/06/23 19:36:38 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -523,6 +523,66 @@
 }
 
 /*
+ * Do the usual access checking.
+ * file_mode, uid and gid are from the vnode in question,
+ * while acc_mode and cred are from the VOP_ACCESS parameter list
+ */
+int
+genfs_can_access(enum vtype type, mode_t file_mode, uid_t uid, gid_t gid,
+    mode_t acc_mode, kauth_cred_t cred)
+{
+	mode_t mask;
+	int error, ismember;
+
+	/*
+	 * Super-user always gets read/write access, but execute access depends
+	 * on at least one execute bit being set.
+	 */
+	if (kauth_authorize_generic(cred, KAUTH_GENERIC_ISSUSER, NULL) == 0) {
+		if ((acc_mode & VEXEC) && type != VDIR &&
+		    (file_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0)
+			return (EACCES);
+		return (0);
+	}
+
+	mask = 0;
+
+	/* Otherwise, check the owner. */
+	if (kauth_cred_geteuid(cred) == uid) {
+		if (acc_mode & VEXEC)
+			mask |= S_IXUSR;
+		if (acc_mode & VREAD)
+			mask |= S_IRUSR;
+		if (acc_mode & VWRITE)
+			mask |= S_IWUSR;
+		return ((file_mode & mask) == mask ? 0 : EACCES);
+	}
+
+	/* Otherwise, check the groups. */
+	error = kauth_cred_ismember_gid(cred, gid, &ismember);
+	if (error)
+		return (error);
+	if (kauth_cred_getegid(cred) == gid || ismember) {
+		if (acc_mode & VEXEC)
+			mask |= S_IXGRP;
+		if (acc_mode & VREAD)
+			mask |= S_IRGRP;
+		if (acc_mode & VWRITE)
+			mask |= S_IWGRP;
+		return ((file_mode & mask) == mask ? 0 : EACCES);
+	}
+
+	/* Otherwise, check everyone else. */
+	if (acc_mode & VEXEC)
+		mask |= S_IXOTH;
+	if (acc_mode & VREAD)
+		mask |= S_IROTH;
+	if (acc_mode & VWRITE)
+		mask |= S_IWOTH;
+	return ((file_mode & mask) == mask ? 0 : EACCES);
+}
+
+/*
  * Common routine to check if chmod() is allowed.
  *
  * Policy:

Index: src/sys/miscfs/kernfs/kernfs_vnops.c
diff -u src/sys/miscfs/kernfs/kernfs_vnops.c:1.136 src/sys/miscfs/kernfs/kernfs_vnops.c:1.137
--- src/sys/miscfs/kernfs/kernfs_vnops.c:1.136	Sat Mar 14 15:36:22 2009
+++ src/sys/miscfs/kernfs/kernfs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: kernfs_vnops.c,v 1.136 2009/03/14 15:36:22 dsl Exp $	*/
+/*	$NetBSD: kernfs_vnops.c,v 1.137 2009/06/23 19:36:40 elad Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.136 2009/03/14 15:36:22 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.137 2009/06/23 19:36:40 elad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ipsec.h"
@@ -777,7 +777,7 @@
 	if ((error = VOP_GETATTR(ap->a_vp, &va, ap->a_cred)) != 0)
 		return (error);
 
-	return (vaccess(va.va_type, va.va_mode, va.va_uid, va.va_gid,
+	return (genfs_can_access(va.va_type, va.va_mode, va.va_uid, va.va_gid,
 	    ap->a_mode, ap->a_cred));
 }
 

Index: src/sys/miscfs/procfs/procfs_vnops.c
diff -u src/sys/miscfs/procfs/procfs_vnops.c:1.174 src/sys/miscfs/procfs/procfs_vnops.c:1.175
--- src/sys/miscfs/procfs/procfs_vnops.c:1.174	Sun May 24 21:41:26 2009
+++ src/sys/miscfs/procfs/procfs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: procfs_vnops.c,v 1.174 2009/05/24 21:41:26 ad Exp $	*/
+/*	$NetBSD: procfs_vnops.c,v 1.175 2009/06/23 19:36:40 elad Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -105,7 +105,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: procfs_vnops.c,v 1.174 2009/05/24 21:41:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_vnops.c,v 1.175 2009/06/23 19:36:40 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -932,7 +932,7 @@
 	if ((error = VOP_GETATTR(ap->a_vp, &va, ap->a_cred)) != 0)
 		return (error);
 
-	return (vaccess(va.va_type, va.va_mode,
+	return (genfs_can_access(va.va_type, va.va_mode,
 	    va.va_uid, va.va_gid, ap->a_mode, ap->a_cred));
 }
 

Index: src/sys/nfs/nfs_vnops.c
diff -u src/sys/nfs/nfs_vnops.c:1.278 src/sys/nfs/nfs_vnops.c:1.279
--- src/sys/nfs/nfs_vnops.c:1.278	Sun May 10 05:18:26 2009
+++ src/sys/nfs/nfs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vnops.c,v 1.278 2009/05/10 05:18:26 yamt Exp $	*/
+/*	$NetBSD: nfs_vnops.c,v 1.279 2009/06/23 19:36:40 elad Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.278 2009/05/10 05:18:26 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.279 2009/06/23 19:36:40 elad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -3408,7 +3408,7 @@
 		}
 	}
 
-	return (vaccess(va.va_type, va.va_mode,
+	return (genfs_can_access(va.va_type, va.va_mode,
 	    va.va_uid, va.va_gid, ap->a_mode, ap->a_cred));
 }
 

Index: src/sys/ufs/ext2fs/ext2fs_vnops.c
diff -u src/sys/ufs/ext2fs/ext2fs_vnops.c:1.86 src/sys/ufs/ext2fs/ext2fs_vnops.c:1.87
--- src/sys/ufs/ext2fs/ext2fs_vnops.c:1.86	Thu May  7 19:30:30 2009
+++ src/sys/ufs/ext2fs/ext2fs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ext2fs_vnops.c,v 1.86 2009/05/07 19:30:30 elad Exp $	*/
+/*	$NetBSD: ext2fs_vnops.c,v 1.87 2009/06/23 19:36:40 elad Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.86 2009/05/07 19:30:30 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.87 2009/06/23 19:36:40 elad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -258,7 +258,7 @@
 	if ((mode & VWRITE) && (ip->i_e2fs_flags & EXT2_IMMUTABLE))
 		return (EPERM);
 
-	return (vaccess(vp->v_type, ip->i_e2fs_mode & ALLPERMS,
+	return (genfs_can_access(vp->v_type, ip->i_e2fs_mode & ALLPERMS,
 			ip->i_uid, ip->i_gid, mode, ap->a_cred));
 }
 

Index: src/sys/ufs/ufs/ufs_vnops.c
diff -u src/sys/ufs/ufs/ufs_vnops.c:1.177 src/sys/ufs/ufs/ufs_vnops.c:1.178
--- src/sys/ufs/ufs/ufs_vnops.c:1.177	Fri May  8 10:52:00 2009
+++ src/sys/ufs/ufs/ufs_vnops.c	Tue Jun 23 19:36:40 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_vnops.c,v 1.177 2009/05/08 10:52:00 rmind Exp $	*/
+/*	$NetBSD: ufs_vnops.c,v 1.178 2009/06/23 19:36:40 elad Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.177 2009/05/08 10:52:00 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.178 2009/06/23 19:36:40 elad Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -328,7 +328,7 @@
 	if ((mode & VWRITE) && (ip->i_flags & IMMUTABLE))
 		return (EPERM);
 
-	return (vaccess(vp->v_type, ip->i_mode & ALLPERMS,
+	return (genfs_can_access(vp->v_type, ip->i_mode & ALLPERMS,
 		ip->i_uid, ip->i_gid, mode, ap->a_cred));
 }
 

Reply via email to