Author: lulf
Date: Mon Jan 18 19:09:16 2010
New Revision: 202584
URL: http://svn.freebsd.org/changeset/base/202584

Log:
  Revert parts of r202283:
  - Return EOPNOTSUPP before EROFS to be consistent with other filesystems.
  - Fix setting of the nodump flag for users without PRIV_VFS_SYSFLAGS 
privilege.
  
  Submitted by: jh@

Modified:
  head/sys/fs/ext2fs/ext2_vnops.c

Modified: head/sys/fs/ext2fs/ext2_vnops.c
==============================================================================
--- head/sys/fs/ext2fs/ext2_vnops.c     Mon Jan 18 18:58:03 2010        
(r202583)
+++ head/sys/fs/ext2fs/ext2_vnops.c     Mon Jan 18 19:09:16 2010        
(r202584)
@@ -402,11 +402,12 @@ ext2_setattr(ap)
                return (EINVAL);
        }
        if (vap->va_flags != VNOVAL) {
-               if (vp->v_mount->mnt_flag & MNT_RDONLY)
-                       return (EROFS);
                /* Disallow flags not supported by ext2fs. */
                if(vap->va_flags & ~(SF_APPEND | SF_IMMUTABLE | UF_NODUMP))
-                       return(EOPNOTSUPP);
+                       return (EOPNOTSUPP);
+
+               if (vp->v_mount->mnt_flag & MNT_RDONLY)
+                       return (EROFS);
                /*
                 * Callers may only modify the file flags on objects they
                 * have VADMIN rights for.
@@ -430,9 +431,11 @@ ext2_setattr(ap)
                        ip->i_flags = vap->va_flags;
                } else {
                        if (ip->i_flags
-                           & (SF_NOUNLINK | SF_IMMUTABLE | SF_APPEND))
+                           & (SF_NOUNLINK | SF_IMMUTABLE | SF_APPEND) ||
+                           (vap->va_flags & UF_SETTABLE) != vap->va_flags)
                                return (EPERM);
                        ip->i_flags &= SF_SETTABLE;
+                       ip->i_flags |= (vap->va_flags & UF_SETTABLE);
                }
                ip->i_flag |= IN_CHANGE;
                if (vap->va_flags & (IMMUTABLE | APPEND))
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to