Răsfoiți Sursa

UBIFS: fix the dark space calculation

The dark space calculation should be 64 bit type-casted, when
assigning to tmp64 (similar to how total_free is calculated).
Overflow will occur for very large flashes.

Signed-off-by: srimugunthan <srimugunthan.dhandapani@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
srimugunthan dhandapani 14 ani în urmă
părinte
comite
7606f85a70
2 a modificat fișierele cu 2 adăugiri și 2 ștergeri
  1. 1 1
      fs/ubifs/recovery.c
  2. 1 1
      fs/ubifs/sb.c

+ 1 - 1
fs/ubifs/recovery.c

@@ -983,7 +983,7 @@ int ubifs_recover_inl_heads(struct ubifs_info *c, void *sbuf)
 }
 }
 
 
 /**
 /**
- *  clean_an_unclean_leb - read and write a LEB to remove corruption.
+ * clean_an_unclean_leb - read and write a LEB to remove corruption.
  * @c: UBIFS file-system description object
  * @c: UBIFS file-system description object
  * @ucleb: unclean LEB information
  * @ucleb: unclean LEB information
  * @sbuf: LEB-sized buffer to use
  * @sbuf: LEB-sized buffer to use

+ 1 - 1
fs/ubifs/sb.c

@@ -247,7 +247,7 @@ static int create_default_filesystem(struct ubifs_info *c)
 	mst->total_dirty = cpu_to_le64(tmp64);
 	mst->total_dirty = cpu_to_le64(tmp64);
 
 
 	/*  The indexing LEB does not contribute to dark space */
 	/*  The indexing LEB does not contribute to dark space */
-	tmp64 = (c->main_lebs - 1) * c->dark_wm;
+	tmp64 = ((long long)(c->main_lebs - 1) * c->dark_wm);
 	mst->total_dark = cpu_to_le64(tmp64);
 	mst->total_dark = cpu_to_le64(tmp64);
 
 
 	mst->total_used = cpu_to_le64(UBIFS_INO_NODE_SZ);
 	mst->total_used = cpu_to_le64(UBIFS_INO_NODE_SZ);