[lkml]   [2008]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[patch 13/49] md: linear: Fix a division by zero bug for very small arrays.
    2.6.27-stable review patch.  If anyone has any objections, please let us know.


    From: Andre Noll <>

    commit f1cd14ae52985634d0389e934eba25b5ecf24565 upstream

    Date: Thu, 6 Nov 2008 19:41:24 +1100
    Subject: [patch 13/49] md: linear: Fix a division by zero bug for very small arrays.

    We currently oops with a divide error on starting a linear software
    raid array consisting of at least two very small (< 500K) devices.

    The bug is caused by the calculation of the hash table size which
    tries to compute sector_div(sz, base) with "base" being zero due to
    the small size of the component devices of the array.

    Fix this by requiring the hash spacing to be at least one which
    implies that also "base" is non-zero.

    This bug has existed since about 2.6.14.

    Signed-off-by: Andre Noll <>
    Signed-off-by: NeilBrown <>
    Signed-off-by: Greg Kroah-Hartman <>

    drivers/md/linear.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/md/linear.c
    +++ b/drivers/md/linear.c
    @@ -157,6 +157,8 @@ static linear_conf_t *linear_conf(mddev_

    min_spacing = conf->array_sectors / 2;
    sector_div(min_spacing, PAGE_SIZE/sizeof(struct dev_info *));
    + if (min_spacing == 0)
    + min_spacing = 1;

    /* min_spacing is the minimum spacing that will fit the hash
    * table in one PAGE. This may be much smaller than needed.

     \ /
      Last update: 2008-11-12 01:33    [W:0.025 / U:4.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site