diff options
| author | 2023-01-24 18:41:40 +0000 | |
|---|---|---|
| committer | 2023-01-24 18:41:40 +0000 | |
| commit | 93ec6f2a1ec21591e68d3e0d815c829f3c81e99f (patch) | |
| tree | 19e82906e322decb548f1772bd958dcacb082f4e | |
| parent | 24b785d3bbd2e811a1d466f87a68fae539bd2a2d (diff) | |
Don't store a pointer to internal SensorManager
The underlying SensorManager::getInstanceForPackage already manages and
caches the SensorManager instance.
The fuzzers are treating this as a memory leak since it's never freed in
sensorservice.
Test: m
Bug: 266474722
Change-Id: I0025cf9c2e51f96e134dcdfe13771b5289535ce5
4 files changed, 4 insertions, 16 deletions
diff --git a/services/sensorservice/aidl/SensorManager.cpp b/services/sensorservice/aidl/SensorManager.cpp index 9b0334443b..b7aecdf1bd 100644 --- a/services/sensorservice/aidl/SensorManager.cpp +++ b/services/sensorservice/aidl/SensorManager.cpp @@ -185,12 +185,8 @@ ndk::ScopedAStatus SensorManagerAidl::getSensorList(std::vector<SensorInfo>* _ai } ::android::SensorManager& SensorManagerAidl::getInternalManager() { - std::lock_guard<std::mutex> lock(mInternalManagerMutex); - if (mInternalManager == nullptr) { - mInternalManager = &::android::SensorManager::getInstanceForPackage( - String16(ISensorManager::descriptor)); - } - return *mInternalManager; + return ::android::SensorManager::getInstanceForPackage( + String16(ISensorManager::descriptor)); } /* One global looper for all event queues created from this SensorManager. */ diff --git a/services/sensorservice/aidl/include/sensorserviceaidl/SensorManagerAidl.h b/services/sensorservice/aidl/include/sensorserviceaidl/SensorManagerAidl.h index c77ee880dd..83496f6012 100644 --- a/services/sensorservice/aidl/include/sensorserviceaidl/SensorManagerAidl.h +++ b/services/sensorservice/aidl/include/sensorserviceaidl/SensorManagerAidl.h @@ -57,8 +57,6 @@ private: ::android::SensorManager& getInternalManager(); sp<Looper> getLooper(); - std::mutex mInternalManagerMutex; - ::android::SensorManager* mInternalManager = nullptr; // does not own sp<Looper> mLooper; volatile bool mStopThread; diff --git a/services/sensorservice/hidl/SensorManager.cpp b/services/sensorservice/hidl/SensorManager.cpp index 938060063f..f04712c534 100644 --- a/services/sensorservice/hidl/SensorManager.cpp +++ b/services/sensorservice/hidl/SensorManager.cpp @@ -193,12 +193,8 @@ sp<Looper> SensorManager::getLooper() { } ::android::SensorManager& SensorManager::getInternalManager() { - std::lock_guard<std::mutex> lock(mInternalManagerMutex); - if (mInternalManager == nullptr) { - mInternalManager = &::android::SensorManager::getInstanceForPackage( - String16(ISensorManager::descriptor)); - } - return *mInternalManager; + return ::android::SensorManager::getInstanceForPackage( + String16(ISensorManager::descriptor)); } Return<void> SensorManager::createEventQueue( diff --git a/services/sensorservice/hidl/include/sensorservicehidl/SensorManager.h b/services/sensorservice/hidl/include/sensorservicehidl/SensorManager.h index 8d7a05b5e2..1b085acfca 100644 --- a/services/sensorservice/hidl/include/sensorservicehidl/SensorManager.h +++ b/services/sensorservice/hidl/include/sensorservicehidl/SensorManager.h @@ -58,8 +58,6 @@ private: ::android::SensorManager& getInternalManager(); sp<Looper> getLooper(); - std::mutex mInternalManagerMutex; - ::android::SensorManager* mInternalManager = nullptr; // does not own sp<Looper> mLooper; volatile bool mStopThread; |