Messages in this thread | | | Subject | Re: A regression in recent 3.2 kernel: bdi_dirty_limit() divide error | From | Peter Zijlstra <> | Date | Sat, 07 Jan 2012 17:35:25 +0100 |
| |
On Sat, 2012-01-07 at 22:56 +0800, Wu Fengguang wrote: > Subject: > Date: Sat Jan 07 22:50:45 CST 2012 > > The uninitilized shift may lead to denominator=0 in > prop_fraction_percpu() and divide error in bdi_dirty_limit().
I'm not seeing how, only proc_change_shift() can change ->index, and it does that after it writes ->pg[index]->shift.
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> > --- > lib/proportions.c | 1 + > 1 file changed, 1 insertion(+) > > --- linux.orig/lib/proportions.c 2012-01-07 22:50:29.000000000 +0800 > +++ linux/lib/proportions.c 2012-01-07 22:50:37.000000000 +0800 > @@ -82,6 +82,7 @@ int prop_descriptor_init(struct prop_des > > pd->index = 0; > pd->pg[0].shift = shift; > + pd->pg[1].shift = shift; > mutex_init(&pd->mutex); > err = percpu_counter_init(&pd->pg[0].events, 0); > if (err) > >
| |