xfs
[Top] [All Lists]

[PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning

To: xfs@xxxxxxxxxxx
Subject: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 19 Jan 2010 11:41:51 +1100
In-reply-to: <1263861711-13900-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1263861711-13900-1-git-send-email-david@xxxxxxxxxxxxx>
gcc warns of an array subscript out of bounds in xfs_mod_sb().
The code is written in such a way that if the array subscript is
out of bounds, then it will assert fail. Rearrange the code to
avoid the bounds check warning.

Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
---
 fs/xfs/xfs_mount.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 0df5045..d95bd18 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -1631,15 +1631,14 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields)
        xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields);
 
        /* find modified range */
+       f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields);
+       ASSERT((1LL << f) & XFS_SB_MOD_BITS);
+       last = xfs_sb_info[f + 1].offset - 1;
 
        f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields);
        ASSERT((1LL << f) & XFS_SB_MOD_BITS);
        first = xfs_sb_info[f].offset;
 
-       f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields);
-       ASSERT((1LL << f) & XFS_SB_MOD_BITS);
-       last = xfs_sb_info[f + 1].offset - 1;
-
        xfs_trans_log_buf(tp, bp, first, last);
 }
 
-- 
1.6.5

<Prev in Thread] Current Thread [Next in Thread>