On Fri, Sep 06, 2013 at 10:59:16PM -0700, Hugh Dickins wrote: > Hit divide-by-0 in vmpressure_work_fn(): checking vmpr->scanned before > taking the lock is not enough, we must check scanned afterwards too. > > Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx Hm... Just trying to understand this one. I don't see how this can happen, considering that only one instance of vmpressure_work_fn() supposed to be running (unlike vmpressure()), and the only place where we zero vmpr->scanned is vmpressure_work_fn() itself? > --- > > mm/vmpressure.c | 3 +++ > 1 file changed, 3 insertions(+) > > --- 3.11/mm/vmpressure.c 2013-09-02 13:46:10.000000000 -0700 > +++ linux/mm/vmpressure.c 2013-09-06 22:43:03.596003080 -0700 > @@ -187,6 +187,9 @@ static void vmpressure_work_fn(struct wo > vmpr->reclaimed = 0; > spin_unlock(&vmpr->sr_lock); > > + if (!scanned) > + return; > + > do { > if (vmpressure_event(vmpr, scanned, reclaimed)) > break; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>