From: Barry Naujok Date: Mon, 8 Dec 2008 02:42:35 +0000 (+0000) Subject: Fix unaligned accesses in IA64 when getting disk extents X-Git-Tag: v3.0.0~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c32ccfc8ac01db12c3d16aef0d34b955a7716b3;p=thirdparty%2Fxfsprogs-dev.git Fix unaligned accesses in IA64 when getting disk extents Merge of master-melb:xfs-cmds:32642a by kenmcd. Fix unaligned accesses when getting disk extents on IA64 --- diff --git a/db/bmap.c b/db/bmap.c index bfd4856aa..ef06b3063 100644 --- a/db/bmap.c +++ b/db/bmap.c @@ -277,21 +277,14 @@ convert_extent( xfs_dfilblks_t *cp, int *fp) { - xfs_bmbt_irec_t irec, *s = &irec; - xfs_bmbt_rec_t rpcopy, *p = &rpcopy; + xfs_bmbt_irec_t irec; - memmove(&rpcopy, rp, sizeof(rpcopy)); - libxfs_bmbt_disk_get_all(p, s); + libxfs_bmbt_disk_get_all(rp, &irec); - if (s->br_state == XFS_EXT_UNWRITTEN) { - *fp = 1; - } else { - *fp = 0; - } - - *op = s->br_startoff; - *sp = s->br_startblock; - *cp = s->br_blockcount; + *fp = irec.br_state == XFS_EXT_UNWRITTEN; + *op = irec.br_startoff; + *sp = irec.br_startblock; + *cp = irec.br_blockcount; } void diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index 3632d5e50..a7a080512 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -181,7 +181,8 @@ xfs_bmbt_disk_get_all( xfs_bmbt_rec_t *r, xfs_bmbt_irec_t *s) { - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s); + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), + get_unaligned_be64(&r->l1), s); } /*