block: Fix overrun in lcm() and move it to lib
authorMartin K. Petersen <martin.petersen@oracle.com>
Mon, 15 Mar 2010 11:46:51 +0000 (12:46 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 15 Mar 2010 11:47:59 +0000 (12:47 +0100)
lcm() was defined to take integer-sized arguments.  The supplied
arguments are multiplied, however, causing us to overflow given
sufficiently large input.  That in turn led to incorrect optimal I/O
size reporting in some cases (RAID over RAID).

Switch lcm() over to unsigned long similar to gcd() and move the
function from blk-settings.c to lib.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

No differences found