]> www.infradead.org Git - mtd-utils.git/commitdiff
libubi: fix wrong size calculation with sizes > 4GiB
authorDetlef Bardtholdt <bardtholdt.detlef@ng-litef.de>
Mon, 8 Jun 2009 07:34:55 +0000 (09:34 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 8 Jun 2009 08:37:12 +0000 (09:37 +0100)
This fixes the handling of total_bytes, avail_bytes and rsvd_bytes.
The result of the multiplication must be 64 Bit.

Signed-off-by: Detlef Bardtholdt <bardtholdt.detlef@ng-litef.de>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
ubi-utils/src/libubi.c

index a4313ab7e5fee502bd8171d1918dda502634fd0d..fd977747e147b28f6fb5d09f0cd8caac442c7dc5 100644 (file)
@@ -1109,8 +1109,8 @@ int ubi_get_dev_info1(libubi_t desc, int dev_num, struct ubi_dev_info *info)
        if (dev_read_int(lib->dev_min_io_size, dev_num, &info->min_io_size))
                return -1;
 
-       info->avail_bytes = info->avail_lebs * info->leb_size;
-       info->total_bytes = info->total_lebs * info->leb_size;
+       info->avail_bytes = (long long)info->avail_lebs * info->leb_size;
+       info->total_bytes = (long long)info->total_lebs * info->leb_size;
 
        return 0;
 
@@ -1185,7 +1185,7 @@ int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id,
                           &info->corrupted);
        if (ret)
                return -1;
-       info->rsvd_bytes = info->leb_size * info->rsvd_lebs;
+       info->rsvd_bytes = (long long)info->leb_size * info->rsvd_lebs;
 
        ret = vol_read_data(lib->vol_name, dev_num, vol_id, &info->name,
                            UBI_VOL_NAME_MAX + 2);