[Ocfs2-tools-devel] [PATCH] Swap hdr_superblkcnt before using

Goldwyn Rodrigues rgoldwyn at gmail.com
Mon Jan 14 15:29:57 PST 2013


Swap hdr_superblkcnt before using in a loop.
This fixes a bug in o2image restore in big-endian archs.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn at suse.de>

---
diff --git a/libocfs2/image.c b/libocfs2/image.c
index 41d1a53..ae339eb 100644
--- a/libocfs2/image.c
+++ b/libocfs2/image.c
@@ -48,6 +48,8 @@ void ocfs2_image_swap_header(struct ocfs2_image_hdr *hdr)
 	if (cpu_is_little_endian)
 		return;

+	hdr->hdr_superblkcnt	= bswap_64(hdr->hdr_superblkcnt);
+
 	for (i = 0; i < hdr->hdr_superblkcnt; i++)
 		hdr->hdr_superblocks[i]	= bswap_64(hdr->hdr_superblocks[i]);

@@ -58,7 +60,6 @@ void ocfs2_image_swap_header(struct ocfs2_image_hdr *hdr)
 	hdr->hdr_fsblksz 	= bswap_64(hdr->hdr_fsblksz);
 	hdr->hdr_imgblkcnt	= bswap_64(hdr->hdr_imgblkcnt);
 	hdr->hdr_bmpblksz	= bswap_64(hdr->hdr_bmpblksz);
-	hdr->hdr_superblkcnt	= bswap_64(hdr->hdr_superblkcnt);
 }

 errcode_t ocfs2_image_free_bitmap(ocfs2_filesys *ofs)



More information about the Ocfs2-tools-devel mailing list