Messages in this thread | | | Date | Sun, 8 Jan 2012 10:33:05 +0800 | From | Wu Fengguang <> | Subject | Re: A regression in recent 3.2 kernel: bdi_dirty_limit() divide error |
| |
On Sat, Jan 07, 2012 at 05:35:25PM +0100, Peter Zijlstra wrote: > 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.
Then I lose the clue why bdi_dirty_limit() will divide error at all.
prop_change_shift() does
change ->pg[index]->shift smp_wmb() change ->index
Will the read side prop_fraction_percpu() need some read memory barrier?
Thanks, Fengguang
| |