Messages in this thread | | | Date | Mon, 24 Sep 2012 16:08:33 +0530 | From | "Srivatsa S. Bhat" <> | Subject | Re: divide error: bdi_dirty_limit+0x5a/0x9e |
| |
On 09/24/2012 03:53 PM, Borislav Petkov wrote: > Hi all, > > we're able to trigger the oops below when doing CPU hotplug tests. >
I hit this problem as well, which I reported here, a few days ago: https://lkml.org/lkml/2012/9/13/222
<snip>
> ... > > and from looking at the register dump below, the dividend, which should > be in %rdx:%rax is 0 and the divisor (denominator) we've got from > bdi_writeout_fraction and is in %rdi is also 0. Which is strange because > fprop_fraction_percpu guards for division by zero by setting denominator > to 1 if it were zero but what about the case where den > num? Can that > even happen? > > And also, what happens if num is 0? Which it kinda is by looking at %rcx > where there's copy of it. >
Going by the usage of percpu_counter_read_positive() (which is used to get both the values of num and den), the least value that num or den can have is zero. So, the C code to guard against divide-by-zero looks OK to me. Which unfortunately keeps the mystery unsolved :(
Regards, Srivatsa S. Bhat
| |