have to set the ICHG bit when a chown succeeds
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 15 May 1990 07:28:02 +0000 (23:28 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 15 May 1990 07:28:02 +0000 (23:28 -0800)
SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 7.40
SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.40
SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 7.40
SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.40

usr/src/sys/ufs/ffs/ffs_vnops.c
usr/src/sys/ufs/ffs/ufs_vnops.c
usr/src/sys/ufs/lfs/lfs_vnops.c
usr/src/sys/ufs/ufs/ufs_vnops.c

index 9c9015f..f9b6612 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ffs_vnops.c 7.39 (Berkeley) %G%
+ *     @(#)ffs_vnops.c 7.40 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -552,7 +552,7 @@ chown1(vp, uid, gid, cred)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
-                               return (0);
+                               goto good;
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
@@ -572,11 +572,12 @@ chown1(vp, uid, gid, cred)
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
-               (void) chkdq(ip, change, cred, FORCE);
-               (void) chkiq(ip, 1, cred, FORCE);
+               (void) chkdq(ip, change, cred, FORCE|CHOWN);
+               (void) chkiq(ip, 1, cred, FORCE|CHOWN);
        }
        if (error)
                return (error);
        }
        if (error)
                return (error);
+good:
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
index 6ccd5b5..3c77c18 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ufs_vnops.c 7.39 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.40 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -552,7 +552,7 @@ chown1(vp, uid, gid, cred)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
-                               return (0);
+                               goto good;
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
@@ -572,11 +572,12 @@ chown1(vp, uid, gid, cred)
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
-               (void) chkdq(ip, change, cred, FORCE);
-               (void) chkiq(ip, 1, cred, FORCE);
+               (void) chkdq(ip, change, cred, FORCE|CHOWN);
+               (void) chkiq(ip, 1, cred, FORCE|CHOWN);
        }
        if (error)
                return (error);
        }
        if (error)
                return (error);
+good:
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
index f7e1b3d..503ab15 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)lfs_vnops.c 7.39 (Berkeley) %G%
+ *     @(#)lfs_vnops.c 7.40 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -552,7 +552,7 @@ chown1(vp, uid, gid, cred)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
-                               return (0);
+                               goto good;
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
@@ -572,11 +572,12 @@ chown1(vp, uid, gid, cred)
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
-               (void) chkdq(ip, change, cred, FORCE);
-               (void) chkiq(ip, 1, cred, FORCE);
+               (void) chkdq(ip, change, cred, FORCE|CHOWN);
+               (void) chkiq(ip, 1, cred, FORCE|CHOWN);
        }
        if (error)
                return (error);
        }
        if (error)
                return (error);
+good:
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
index 6ccd5b5..3c77c18 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ufs_vnops.c 7.39 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.40 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -552,7 +552,7 @@ chown1(vp, uid, gid, cred)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
                }
                if ((error = chkdq(ip, change, cred, CHOWN)) == 0) {
                        if ((error = chkiq(ip, 1, cred, CHOWN)) == 0)
-                               return (0);
+                               goto good;
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
                        else
                                (void) chkdq(ip, -change, cred, CHOWN|FORCE);
                }
@@ -572,11 +572,12 @@ chown1(vp, uid, gid, cred)
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
                        dqrele(vp, ip->i_dquot[GRPQUOTA]);
                        ip->i_dquot[GRPQUOTA] = NODQUOT;
                }
-               (void) chkdq(ip, change, cred, FORCE);
-               (void) chkiq(ip, 1, cred, FORCE);
+               (void) chkdq(ip, change, cred, FORCE|CHOWN);
+               (void) chkiq(ip, 1, cred, FORCE|CHOWN);
        }
        if (error)
                return (error);
        }
        if (error)
                return (error);
+good:
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
 #endif
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;