[XFS] Fix signedness issues in dquot ID handling, allowing uids/gids above
authorNathan Scott <nathans@sgi.com>
Tue, 1 Nov 2005 23:31:41 +0000 (10:31 +1100)
committerNathan Scott <nathans@sgi.com>
Tue, 1 Nov 2005 23:31:41 +0000 (10:31 +1100)
MAXINT

SGI-PV: 942528
SGI-Modid: xfs-linux:xfs-kern:23828a

Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/quota/xfs_dquot.c
fs/xfs/quota/xfs_qm_syscalls.c
fs/xfs/xfs_quota.h

index e2e8d35fa4d0361517bdb1d76f7c08c6de512f20..9987977a4927acca9a0193ce9974c97ea4c37a1c 100644 (file)
@@ -563,8 +563,7 @@ xfs_qm_dqtobp(
         */
        if (dqp->q_blkno == (xfs_daddr_t) 0) {
                /* We use the id as an index */
-               dqp->q_fileoffset = (xfs_fileoff_t) ((uint)id /
-                                                    XFS_QM_DQPERBLK(mp));
+               dqp->q_fileoffset = (xfs_fileoff_t)id / XFS_QM_DQPERBLK(mp);
                nmaps = 1;
                quotip = XFS_DQ_TO_QIP(dqp);
                xfs_ilock(quotip, XFS_ILOCK_SHARED);
index 15e02e8a9d4fc23c2850eac3b1e936f4350a859f..4e397940b3a6889dad1549e2dc31bcd240c71d27 100644 (file)
@@ -109,10 +109,7 @@ xfs_qm_quotactl(
        vfsp = bhvtovfs(bdp);
        mp = XFS_VFSTOM(vfsp);
 
-       if (addr == NULL && cmd != Q_SYNC)
-               return XFS_ERROR(EINVAL);
-       if (id < 0 && cmd != Q_SYNC)
-               return XFS_ERROR(EINVAL);
+       ASSERT(addr != NULL);
 
        /*
         * The following commands are valid even when quotaoff.
@@ -122,7 +119,7 @@ xfs_qm_quotactl(
                /*
                 * Truncate quota files. quota must be off.
                 */
-               if (XFS_IS_QUOTA_ON(mp) || addr == NULL)
+               if (XFS_IS_QUOTA_ON(mp))
                        return XFS_ERROR(EINVAL);
                if (vfsp->vfs_flag & VFS_RDONLY)
                        return XFS_ERROR(EROFS);
@@ -140,8 +137,6 @@ xfs_qm_quotactl(
                 * QUOTAON - enabling quota enforcement.
                 * Quota accounting must be turned on at mount time.
                 */
-               if (addr == NULL)
-                       return XFS_ERROR(EINVAL);
                if (vfsp->vfs_flag & VFS_RDONLY)
                        return XFS_ERROR(EROFS);
                return (xfs_qm_scall_quotaon(mp,
index 32cb79752d5d57a5306069269fc4acf051998cb7..ed965883f702b28de864cf198b1a450a87dd6bd2 100644 (file)
@@ -42,7 +42,7 @@
  * uid_t and gid_t are hard-coded to 32 bits in the inode.
  * Hence, an 'id' in a dquot is 32 bits..
  */
-typedef __int32_t      xfs_dqid_t;
+typedef __uint32_t     xfs_dqid_t;
 
 /*
  * Eventhough users may not have quota limits occupying all 64-bits,