]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_metadump: Fix unaligned accesses
authorEric Sandeen <sandeen@sandeen.net>
Wed, 14 Oct 2015 00:03:23 +0000 (11:03 +1100)
committerDave Chinner <david@fromorbit.com>
Wed, 14 Oct 2015 00:03:23 +0000 (11:03 +1100)
This fixes some unaligned accesses spotted by libubsan in
xfs_metadump.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
db/metadump.c

index 56b733ef085586b1e61cb93362d111fa19630fb4..e503d6f18d31664ee844fa8fec0aecf567658d1c 100644 (file)
@@ -1872,8 +1872,8 @@ scanfunc_bmap(
                xfs_agnumber_t  ag;
                xfs_agblock_t   bno;
 
-               ag = XFS_FSB_TO_AGNO(mp, be64_to_cpu(pp[i]));
-               bno = XFS_FSB_TO_AGBNO(mp, be64_to_cpu(pp[i]));
+               ag = XFS_FSB_TO_AGNO(mp, get_unaligned_be64(&pp[i]));
+               bno = XFS_FSB_TO_AGBNO(mp, get_unaligned_be64(&pp[i]));
 
                if (bno == 0 || bno > mp->m_sb.sb_agblocks ||
                                ag > mp->m_sb.sb_agcount) {
@@ -1938,8 +1938,8 @@ process_btinode(
                xfs_agnumber_t  ag;
                xfs_agblock_t   bno;
 
-               ag = XFS_FSB_TO_AGNO(mp, be64_to_cpu(pp[i]));
-               bno = XFS_FSB_TO_AGBNO(mp, be64_to_cpu(pp[i]));
+               ag = XFS_FSB_TO_AGNO(mp, get_unaligned_be64(&pp[i]));
+               bno = XFS_FSB_TO_AGBNO(mp, get_unaligned_be64(&pp[i]));
 
                if (bno == 0 || bno > mp->m_sb.sb_agblocks ||
                                ag > mp->m_sb.sb_agcount) {