Deleted Added
full compact
msdosfs_vfsops.c (162647) msdosfs_vfsops.c (164033)
1/* $FreeBSD: head/sys/fs/msdosfs/msdosfs_vfsops.c 162647 2006-09-26 04:12:49Z tegge $ */
1/* $FreeBSD: head/sys/fs/msdosfs/msdosfs_vfsops.c 164033 2006-11-06 13:42:10Z rwatson $ */
2/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
3
4/*-
5 * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
6 * Copyright (C) 1994, 1995, 1997 TooLs GmbH.
7 * All rights reserved.
8 * Original code by Paul Popelka (paulp@uts.amdahl.com) (see below).
9 *

--- 37 unchanged lines hidden (view full) ---

47 *
48 * October 1992
49 */
50
51#include <sys/param.h>
52#include <sys/systm.h>
53#include <sys/conf.h>
54#include <sys/namei.h>
2/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
3
4/*-
5 * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
6 * Copyright (C) 1994, 1995, 1997 TooLs GmbH.
7 * All rights reserved.
8 * Original code by Paul Popelka (paulp@uts.amdahl.com) (see below).
9 *

--- 37 unchanged lines hidden (view full) ---

47 *
48 * October 1992
49 */
50
51#include <sys/param.h>
52#include <sys/systm.h>
53#include <sys/conf.h>
54#include <sys/namei.h>
55#include <sys/priv.h>
55#include <sys/proc.h>
56#include <sys/kernel.h>
57#include <sys/vnode.h>
58#include <sys/mount.h>
59#include <sys/bio.h>
60#include <sys/buf.h>
61#include <sys/fcntl.h>
62#include <sys/malloc.h>

--- 225 unchanged lines hidden (view full) ---

288 if (error && (flags & FORCECLOSE) == 0)
289 return (error);
290 } else if ((pmp->pm_flags & MSDOSFSMNT_RONLY) &&
291 !vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0)) {
292 /*
293 * If upgrade to read-write by non-root, then verify
294 * that user has necessary permissions on the device.
295 */
56#include <sys/proc.h>
57#include <sys/kernel.h>
58#include <sys/vnode.h>
59#include <sys/mount.h>
60#include <sys/bio.h>
61#include <sys/buf.h>
62#include <sys/fcntl.h>
63#include <sys/malloc.h>

--- 225 unchanged lines hidden (view full) ---

289 if (error && (flags & FORCECLOSE) == 0)
290 return (error);
291 } else if ((pmp->pm_flags & MSDOSFSMNT_RONLY) &&
292 !vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0)) {
293 /*
294 * If upgrade to read-write by non-root, then verify
295 * that user has necessary permissions on the device.
296 */
296 if (suser(td)) {
297 devvp = pmp->pm_devvp;
298 vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, td);
299 error = VOP_ACCESS(devvp, VREAD | VWRITE,
300 td->td_ucred, td);
301 if (error) {
302 VOP_UNLOCK(devvp, 0, td);
303 return (error);
304 }
297 devvp = pmp->pm_devvp;
298 vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, td);
299 error = VOP_ACCESS(devvp, VREAD | VWRITE,
300 td->td_ucred, td);
301 if (error)
302 error = priv_check(td, PRIV_VFS_MOUNT_PERM);
303 if (error) {
305 VOP_UNLOCK(devvp, 0, td);
304 VOP_UNLOCK(devvp, 0, td);
305 return (error);
306 }
306 }
307 VOP_UNLOCK(devvp, 0, td);
307 DROP_GIANT();
308 g_topology_lock();
309 error = g_access(pmp->pm_cp, 0, 1, 0);
310 g_topology_unlock();
311 PICKUP_GIANT();
312 if (error)
313 return (error);
314

--- 33 unchanged lines hidden (view full) ---

348 if (!vn_isdisk(devvp, &error)) {
349 vput(devvp);
350 return (error);
351 }
352 /*
353 * If mount by non-root, then verify that user has necessary
354 * permissions on the device.
355 */
308 DROP_GIANT();
309 g_topology_lock();
310 error = g_access(pmp->pm_cp, 0, 1, 0);
311 g_topology_unlock();
312 PICKUP_GIANT();
313 if (error)
314 return (error);
315

--- 33 unchanged lines hidden (view full) ---

349 if (!vn_isdisk(devvp, &error)) {
350 vput(devvp);
351 return (error);
352 }
353 /*
354 * If mount by non-root, then verify that user has necessary
355 * permissions on the device.
356 */
356 if (suser(td)) {
357 accessmode = VREAD;
358 if ((mp->mnt_flag & MNT_RDONLY) == 0)
359 accessmode |= VWRITE;
360 error = VOP_ACCESS(devvp, accessmode, td->td_ucred, td);
361 if (error) {
362 vput(devvp);
363 return (error);
364 }
357 accessmode = VREAD;
358 if ((mp->mnt_flag & MNT_RDONLY) == 0)
359 accessmode |= VWRITE;
360 error = VOP_ACCESS(devvp, accessmode, td->td_ucred, td);
361 if (error)
362 error = priv_check(td, PRIV_VFS_MOUNT_PERM);
363 if (error) {
364 vput(devvp);
365 return (error);
365 }
366 if ((mp->mnt_flag & MNT_UPDATE) == 0) {
367 error = mountmsdosfs(devvp, mp, td);
368#ifdef MSDOSFS_DEBUG /* only needed for the printf below */
369 pmp = VFSTOMSDOSFS(mp);
370#endif
371 } else {
372 if (devvp != pmp->pm_devvp)

--- 599 unchanged lines hidden ---
366 }
367 if ((mp->mnt_flag & MNT_UPDATE) == 0) {
368 error = mountmsdosfs(devvp, mp, td);
369#ifdef MSDOSFS_DEBUG /* only needed for the printf below */
370 pmp = VFSTOMSDOSFS(mp);
371#endif
372 } else {
373 if (devvp != pmp->pm_devvp)

--- 599 unchanged lines hidden ---