summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2012-04-26 17:12:56 +0200
committerNeilBrown <neilb@suse.de>2012-04-30 09:56:22 +1000
commit34a13953facb53625d300e63af355bf2df0309e0 (patch)
treeac350d6f318631e6a3338c2796efa6fe8a8249aa
parentb51702b82767b726e34d205c9e00a4f61d3044a7 (diff)
downloadmdadm-34a13953facb53625d300e63af355bf2df0309e0.tar.gz
Fix sign extension of bitmap_offset in super1.c
fbdef49811c9e2b54e2064d9af68cfffa77c6e77 incorrectly tried to fix sign extension of the bitmap offset. However mdinfo->bitmap_offset is a u32 and needs to be converted to a 32 bit signed integer before the sign extension. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--super1.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/super1.c b/super1.c
index 36369d8..be77c33 100644
--- a/super1.c
+++ b/super1.c
@@ -620,7 +620,7 @@ static void getinfo_super1(struct supertype *st, struct mdinfo *info, char *map)
info->data_offset = __le64_to_cpu(sb->data_offset);
info->component_size = __le64_to_cpu(sb->size);
if (sb->feature_map & __le32_to_cpu(MD_FEATURE_BITMAP_OFFSET))
- info->bitmap_offset = (long)__le32_to_cpu(sb->bitmap_offset);
+ info->bitmap_offset = (int32_t)__le32_to_cpu(sb->bitmap_offset);
info->disk.major = 0;
info->disk.minor = 0;
@@ -1651,7 +1651,7 @@ add_internal_bitmap1(struct supertype *st,
offset = -room;
}
- sb->bitmap_offset = (long)__cpu_to_le32(offset);
+ sb->bitmap_offset = (int32_t)__cpu_to_le32(offset);
sb->feature_map = __cpu_to_le32(__le32_to_cpu(sb->feature_map)
| MD_FEATURE_BITMAP_OFFSET);