@@ -104,17 +104,18 @@ typedef lbaint_t lba512_t;
#endif
/*
- * Overflowless variant of (block_count * mul_by / 2**div_by)
- * when div_by > mul_by
+ * Overflowless variant of (block_count * mul_by / 2**right_shift)
+ * when 2**right_shift > mul_by
*/
-static lba512_t lba512_muldiv(lba512_t block_count, lba512_t mul_by, int div_by)
+static lba512_t lba512_muldiv(lba512_t block_count, lba512_t mul_by,
+ int right_shift)
{
lba512_t bc_quot, bc_rem;
/* x * m / d == x / d * m + (x % d) * m / d */
- bc_quot = block_count >> div_by;
- bc_rem = block_count - (bc_quot << div_by);
- return bc_quot * mul_by + ((bc_rem * mul_by) >> div_by);
+ bc_quot = block_count >> right_shift;
+ bc_rem = block_count - (bc_quot << right_shift);
+ return bc_quot * mul_by + ((bc_rem * mul_by) >> right_shift);
}
void dev_print (struct blk_desc *dev_desc)
div_by is a misleading parameter name, when we are doing >> div_by. Rename it to right_shift. Reported-by: Simon Glass <sjg at chromium.org> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de> --- disk/part.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -- 2.24.1