Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 861bdbfb authored by Alessio Balsini's avatar Alessio Balsini
Browse files

KernelCpuUidBpfMapReader: Verify presence of Uids before deleting



Make sure the first and last Uids are valid exist in the sparse array
before removing the array range of which they are the boundaries.
If they are valid, but not exist, create fake elements to make sure all
the elemens in the range are deleted.

Bug: 157887803
Test: build
Signed-off-by: default avatarAlessio Balsini <balsini@google.com>
Change-Id: I3b5ddc499178163cb9b0e9cabbe4f3457ae34dad
parent f7c1dc5a
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.internal.os;

import android.os.StrictMode;
import android.os.SystemClock;
import android.util.Slog;
import android.util.SparseArray;
@@ -90,9 +89,21 @@ public abstract class KernelCpuUidBpfMapReader {
        if (mErrors > ERROR_THRESHOLD) {
            return;
        }
        if (endUid < startUid || startUid < 0) {
            return;
        }

        mWriteLock.lock();
        int firstIndex = mData.indexOfKey(startUid);
        if (firstIndex < 0) {
            mData.put(startUid, null);
            firstIndex = mData.indexOfKey(startUid);
        }
        int lastIndex = mData.indexOfKey(endUid);
        if (lastIndex < 0) {
            mData.put(endUid, null);
            lastIndex = mData.indexOfKey(endUid);
        }
        mData.removeAtRange(firstIndex, lastIndex - firstIndex + 1);
        mWriteLock.unlock();
    }