Deleted Added
full compact
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 ---