lkml.org 
[lkml]   [2006]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[GFS2] Fix crc32 calculation in recovery.c [8/70]
    From
    Date
    >From 2a2c98247b822db8df037a56c27201f9d716ac66 Mon Sep 17 00:00:00 2001
    From: Steven Whitehouse <swhiteho@redhat.com>
    Date: Tue, 31 Oct 2006 14:44:50 -0500
    Subject: [PATCH] [GFS2] Fix crc32 calculation in recovery.c

    Commit "[GFS2] split and annotate gfs2_log_head" resulted in an incorrect
    checksum calculation for log headers. This patch corrects the
    problem without resorting to copying the whole log header as
    the previous code used to.

    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
    ---
    fs/gfs2/recovery.c | 9 +++++----
    1 files changed, 5 insertions(+), 4 deletions(-)

    diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
    index 4478162..4acf238 100644
    --- a/fs/gfs2/recovery.c
    +++ b/fs/gfs2/recovery.c
    @@ -136,6 +136,7 @@ static int get_log_header(struct gfs2_jd
    {
    struct buffer_head *bh;
    struct gfs2_log_header_host lh;
    +static const u32 nothing = 0;
    u32 hash;
    int error;

    @@ -143,11 +144,11 @@ static int get_log_header(struct gfs2_jd
    if (error)
    return error;

    - memcpy(&lh, bh->b_data, sizeof(struct gfs2_log_header)); /* XXX */
    - lh.lh_hash = 0;
    - hash = gfs2_disk_hash((char *)&lh, sizeof(struct gfs2_log_header));
    + hash = crc32_le((u32)~0, bh->b_data, sizeof(struct gfs2_log_header) -
    + sizeof(u32));
    + hash = crc32_le(hash, (unsigned char const *)&nothing, sizeof(nothing));
    + hash ^= (u32)~0;
    gfs2_log_header_in(&lh, bh->b_data);
    -
    brelse(bh);

    if (lh.lh_header.mh_magic != GFS2_MAGIC ||
    --
    1.4.1


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-11-30 13:17    [W:0.021 / U:32.660 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site