tmpfs_vnops.c (183299) | tmpfs_vnops.c (184413) |
---|---|
1/* $NetBSD: tmpfs_vnops.c,v 1.39 2007/07/23 15:41:01 jmmv Exp $ */ 2 3/*- 4 * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Julio M. Merino Vidal, developed as part of Google's Summer of Code --- 20 unchanged lines hidden (view full) --- 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33/* 34 * tmpfs vnode interface. 35 */ 36#include <sys/cdefs.h> | 1/* $NetBSD: tmpfs_vnops.c,v 1.39 2007/07/23 15:41:01 jmmv Exp $ */ 2 3/*- 4 * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Julio M. Merino Vidal, developed as part of Google's Summer of Code --- 20 unchanged lines hidden (view full) --- 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33/* 34 * tmpfs vnode interface. 35 */ 36#include <sys/cdefs.h> |
37__FBSDID("$FreeBSD: head/sys/fs/tmpfs/tmpfs_vnops.c 183299 2008-09-23 14:45:10Z obrien $"); | 37__FBSDID("$FreeBSD: head/sys/fs/tmpfs/tmpfs_vnops.c 184413 2008-10-28 13:44:11Z trasz $"); |
38 39#include <sys/param.h> 40#include <sys/fcntl.h> 41#include <sys/lockf.h> 42#include <sys/namei.h> 43#include <sys/priv.h> 44#include <sys/proc.h> 45#include <sys/resourcevar.h> --- 231 unchanged lines hidden (view full) --- 277} 278 279/* --------------------------------------------------------------------- */ 280 281int 282tmpfs_access(struct vop_access_args *v) 283{ 284 struct vnode *vp = v->a_vp; | 38 39#include <sys/param.h> 40#include <sys/fcntl.h> 41#include <sys/lockf.h> 42#include <sys/namei.h> 43#include <sys/priv.h> 44#include <sys/proc.h> 45#include <sys/resourcevar.h> --- 231 unchanged lines hidden (view full) --- 277} 278 279/* --------------------------------------------------------------------- */ 280 281int 282tmpfs_access(struct vop_access_args *v) 283{ 284 struct vnode *vp = v->a_vp; |
285 int mode = v->a_mode; | 285 accmode_t accmode = v->a_accmode; |
286 struct ucred *cred = v->a_cred; 287 288 int error; 289 struct tmpfs_node *node; 290 291 MPASS(VOP_ISLOCKED(vp)); 292 293 node = VP_TO_TMPFS_NODE(vp); 294 295 switch (vp->v_type) { 296 case VDIR: 297 /* FALLTHROUGH */ 298 case VLNK: 299 /* FALLTHROUGH */ 300 case VREG: | 286 struct ucred *cred = v->a_cred; 287 288 int error; 289 struct tmpfs_node *node; 290 291 MPASS(VOP_ISLOCKED(vp)); 292 293 node = VP_TO_TMPFS_NODE(vp); 294 295 switch (vp->v_type) { 296 case VDIR: 297 /* FALLTHROUGH */ 298 case VLNK: 299 /* FALLTHROUGH */ 300 case VREG: |
301 if (mode & VWRITE && vp->v_mount->mnt_flag & MNT_RDONLY) { | 301 if (accmode & VWRITE && vp->v_mount->mnt_flag & MNT_RDONLY) { |
302 error = EROFS; 303 goto out; 304 } 305 break; 306 307 case VBLK: 308 /* FALLTHROUGH */ 309 case VCHR: 310 /* FALLTHROUGH */ 311 case VSOCK: 312 /* FALLTHROUGH */ 313 case VFIFO: 314 break; 315 316 default: 317 error = EINVAL; 318 goto out; 319 } 320 | 302 error = EROFS; 303 goto out; 304 } 305 break; 306 307 case VBLK: 308 /* FALLTHROUGH */ 309 case VCHR: 310 /* FALLTHROUGH */ 311 case VSOCK: 312 /* FALLTHROUGH */ 313 case VFIFO: 314 break; 315 316 default: 317 error = EINVAL; 318 goto out; 319 } 320 |
321 if (mode & VWRITE && node->tn_flags & IMMUTABLE) { | 321 if (accmode & VWRITE && node->tn_flags & IMMUTABLE) { |
322 error = EPERM; 323 goto out; 324 } 325 326 error = vaccess(vp->v_type, node->tn_mode, node->tn_uid, | 322 error = EPERM; 323 goto out; 324 } 325 326 error = vaccess(vp->v_type, node->tn_mode, node->tn_uid, |
327 node->tn_gid, mode, cred, NULL); | 327 node->tn_gid, accmode, cred, NULL); |
328 329out: 330 MPASS(VOP_ISLOCKED(vp)); 331 332 return error; 333} 334 335/* --------------------------------------------------------------------- */ --- 1135 unchanged lines hidden --- | 328 329out: 330 MPASS(VOP_ISLOCKED(vp)); 331 332 return error; 333} 334 335/* --------------------------------------------------------------------- */ --- 1135 unchanged lines hidden --- |