OSDN Git Service

nilfs2: super block operations fix endian bug
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Tue, 7 Apr 2009 02:01:55 +0000 (19:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 7 Apr 2009 15:31:19 +0000 (08:31 -0700)
This adds a missing endian conversion of checksum field in the super
block.  This fixes compatibility issue on big endian machines which will
come to surface after supporting recovery of super block.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/nilfs2/super.c

index d0639a6..b7519c3 100644 (file)
@@ -287,9 +287,9 @@ int nilfs_commit_super(struct nilfs_sb_info *sbi)
        sbp->s_free_blocks_count = cpu_to_le64(nfreeblocks);
        sbp->s_wtime = cpu_to_le64(get_seconds());
        sbp->s_sum = 0;
-       sbp->s_sum = crc32_le(nilfs->ns_crc_seed, (unsigned char *)sbp,
-                             le16_to_cpu(sbp->s_bytes));
-
+       sbp->s_sum = cpu_to_le32(crc32_le(nilfs->ns_crc_seed,
+                                         (unsigned char *)sbp,
+                                         le16_to_cpu(sbp->s_bytes)));
        sbi->s_super->s_dirt = 0;
        return nilfs_sync_super(sbi);
 }