Hi On Dienstag, 11. November 2008, gregkh@suse.de wrote: > > This is a note to let you know that we have just queued up the patch titled > > Subject: md: linear: Fix a division by zero bug for very small arrays. > Subject: md: linear: Fix a division by zero bug for very small arrays. > > to the 2.6.27-stable tree. Its filename is > > md-linear-fix-a-division-by-zero-bug-for-very-small-arrays.patch > > A git repo of this tree can be found at > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > > From jejb@kernel.org Tue Nov 11 09:47:32 2008 > From: Andre Noll > Date: Fri, 7 Nov 2008 00:07:46 GMT > Subject: md: linear: Fix a division by zero bug for very small arrays. > To: stable@kernel.org > Message-ID: <200811070007.mA707k6d006270@hera.kernel.org> > > From: Andre Noll > > commit f1cd14ae52985634d0389e934eba25b5ecf24565 upstream > > Date: Thu, 6 Nov 2008 19:41:24 +1100 > Subject: 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_sectors == 0) > + min_sectors = 1; > > /* min_spacing is the minimum spacing that will fit the hash > * table in one PAGE. This may be much smaller than needed. drivers/md/linear.c: In function 'linear_conf': drivers/md/linear.c:160: error: 'min_sectors' undeclared (first use in this function) drivers/md/linear.c:160: error: (Each undeclared identifier is reported only once drivers/md/linear.c:160: error: for each function it appears in.) make[5]: *** [drivers/md/linear.o] Error 1 make[4]: *** [drivers/md] Error 2 make[4]: *** Waiting for unfinished jobs.... This one obviously depends on: commit 23242fbb470ff4c8c4d41f178832cf1929273d7d Author: Andre Noll Date: Mon Oct 13 11:55:12 2008 +1100 md: linear.c: Make two local variables sector-based. which in turn depends on previous changes. Regards Stefan Lippers-Hollmann