From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4188 invoked by alias); 19 Jul 2009 04:43:29 -0000 Received: (qmail 4182 invoked by alias); 19 Jul 2009 04:43:29 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: STABLE3 - gfs2_edit produces unaligned access To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/STABLE3 X-Git-Reftype: branch X-Git-Oldrev: 8b932966fd7407b85b0b34ca71cb7471bbef8078 X-Git-Newrev: abfc1f6194474c3d218e340c7c3bf1a8d246fcdb From: Bob Peterson Message-Id: <20090719044307.2D16E120269@lists.fedorahosted.org> Date: Sun, 19 Jul 2009 04:43:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q3/txt/msg00053.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=abfc1f6194474c3d218e340c7c3bf1a8d246fcdb Commit: abfc1f6194474c3d218e340c7c3bf1a8d246fcdb Parent: 8b932966fd7407b85b0b34ca71cb7471bbef8078 Author: Bob Peterson AuthorDate: Sat Jul 18 23:37:15 2009 -0500 Committer: Bob Peterson CommitterDate: Sat Jul 18 23:37:15 2009 -0500 gfs2_edit produces unaligned access bz 503530 --- gfs2/edit/hexedit.c | 5 ++--- gfs2/edit/savemeta.c | 10 +++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c index b774ead..ff449e9 100644 --- a/gfs2/edit/hexedit.c +++ b/gfs2/edit/hexedit.c @@ -798,9 +798,8 @@ static void rgcount(void) /* ------------------------------------------------------------------------ */ static uint64_t find_rgrp_block(struct gfs2_inode *dif, int rg) { - char fbuf[sizeof(struct gfs2_rindex)]; int amt; - struct gfs2_rindex ri; + struct gfs2_rindex fbuf, ri; uint64_t foffset, gfs1_adj = 0; foffset = rg * risize(); @@ -815,7 +814,7 @@ static uint64_t find_rgrp_block(struct gfs2_inode *dif, int rg) amt = gfs2_readi(dif, (void *)&fbuf, foffset + gfs1_adj, risize()); if (!amt) /* end of file */ return 0; - gfs2_rindex_in(&ri, fbuf); + gfs2_rindex_in(&ri, (void *)&fbuf); return ri.ri_addr; } diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c index ee5ff04..243ee49 100644 --- a/gfs2/edit/savemeta.c +++ b/gfs2/edit/savemeta.c @@ -52,12 +52,13 @@ extern void read_superblock(void); */ static int get_gfs_struct_info(char *gbuf, int *block_type, int *gstruct_len) { - struct gfs2_meta_header mh; + struct gfs2_meta_header mh, mhbuf; *block_type = 0; *gstruct_len = sbd.bsize; - gfs2_meta_header_in(&mh, gbuf); + memcpy(&mhbuf, gbuf, sizeof(mhbuf)); + gfs2_meta_header_in(&mh, (void *)&mhbuf); if (mh.mh_magic != GFS2_MAGIC) return -1; @@ -782,7 +783,10 @@ static int restore_data(int fd, int in_fd, int printblocksonly) exit(-1); } if (first) { - gfs2_sb_in(&sbd.sd_sb, savedata->buf); + struct gfs2_sb bufsb; + + memcpy(&bufsb, savedata->buf, sizeof(bufsb)); + gfs2_sb_in(&sbd.sd_sb, (void *)&bufsb); sbd1 = (struct gfs_sb *)&sbd.sd_sb; if (sbd1->sb_fs_format == GFS_FORMAT_FS && sbd1->sb_header.mh_type ==