static void vmpressure_work_fn(struct work_struct *work) { ... if (!vmpr->scanned) return; spin_lock(&vmpr->sr_lock); scanned = vmpr->scanned; In some android devices, there will be a "divided by zero" expection. the vmpr->scanned could be zero before “spin_lock(&vmpr->sr_lock)” So the above source code should be changed to: spin_lock(&vmpr->sr_lock); scanned = vmpr->scanned; if (!scanned) { spin_unlock(&vmpr->sr_lock); return; }
Thanks, I queued that fix.