From a05b30e62295264d06367614c6570c871476328e Mon Sep 17 00:00:00 2001 From: lijilou Date: Mon, 2 Dec 2024 13:42:16 +0800 Subject: JobConcurrencyManager: fix the NPE problem. mRunningJob maybe null if there is no job running. Test: OEM monkey test Flag: EXEMPT bugfix Bug: 381776408 Change-Id: I36284ba4afe28d6da57ee79a2d27d722928747ae --- .../service/java/com/android/server/job/JobConcurrencyManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'apex') diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java index ba8e3e8b48fc..5255e7227709 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -1034,7 +1034,7 @@ class JobConcurrencyManager { for (int p = preferredUidOnly.size() - 1; p >= 0; --p) { final ContextAssignment assignment = preferredUidOnly.get(p); final JobStatus runningJob = assignment.context.getRunningJobLocked(); - if (runningJob.getUid() != nextPending.getUid()) { + if (runningJob == null || runningJob.getUid() != nextPending.getUid()) { continue; } final int jobBias = mService.evaluateJobBiasLocked(runningJob); @@ -1916,8 +1916,9 @@ class JobConcurrencyManager { for (int i = 0; i < mActiveServices.size(); i++) { final JobServiceContext jc = mActiveServices.get(i); final JobStatus js = jc.getRunningJobLocked(); - if (jc.stopIfExecutingLocked(pkgName, userId, namespace, matchJobId, jobId, - stopReason, internalStopReason)) { + if (js != null && + jc.stopIfExecutingLocked(pkgName, userId, namespace, + matchJobId, jobId, stopReason, internalStopReason)) { foundSome = true; pw.print("Stopping job: "); js.printUniqueId(pw); -- cgit v1.2.3-59-g8ed1b