Loading apex/manifest.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media", "version": 330090000, "version": 339990000, "requireNativeLibs": [ "libandroid.so", "libbinder_ndk.so", Loading apex/manifest_codec.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media.swcodec", "version": 330090000, "version": 339990000, "requireNativeLibs": [ ":sphal" ] Loading services/audioflinger/AudioFlinger.cpp +13 −6 Original line number Diff line number Diff line Loading @@ -3889,17 +3889,24 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, goto Exit; } } else if (sessionId == AUDIO_SESSION_OUTPUT_STAGE) { if (!isAudioServerUid(callingUid)) { ALOGE("%s: only APM can create using AUDIO_SESSION_OUTPUT_STAGE", __func__); lStatus = PERMISSION_DENIED; goto Exit; } if (io == AUDIO_IO_HANDLE_NONE) { ALOGE("%s: APM must specify output when using AUDIO_SESSION_OUTPUT_STAGE", __func__); lStatus = BAD_VALUE; goto Exit; } PlaybackThread *thread = checkPlaybackThread_l(io); if (thread == nullptr) { ALOGE("%s: invalid output %d specified for AUDIO_SESSION_OUTPUT_STAGE", __func__, io); lStatus = BAD_VALUE; goto Exit; } if (!modifyDefaultAudioEffectsAllowed(adjAttributionSource) && !isAudioServerUid(callingUid)) { ALOGE("%s: effect on AUDIO_SESSION_OUTPUT_STAGE not granted for uid %d", __func__, callingUid); lStatus = PERMISSION_DENIED; goto Exit; } } else if (sessionId == AUDIO_SESSION_DEVICE) { if (!modifyDefaultAudioEffectsAllowed(adjAttributionSource)) { ALOGE("%s: device effect permission denied for uid %d", __func__, callingUid); Loading services/camera/libcameraservice/CameraServiceWatchdog.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,10 @@ bool CameraServiceWatchdog::threadLoop() tidToCycleCounterMap[currentThreadId]++; if (tidToCycleCounterMap[currentThreadId] >= mMaxCycles) { ALOGW("CameraServiceWatchdog triggering kill for pid: %d", getpid()); kill(getpid(), SIGKILL); ALOGW("CameraServiceWatchdog triggering abort for pid: %d", getpid()); // We use abort here so we can get a tombstone for better // debugging. abort(); } } } Loading services/camera/libcameraservice/CameraServiceWatchdog.h +3 −4 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ * and single call monitoring differently. See function documentation for * more details. */ #pragma once #include <chrono> #include <thread> #include <time.h> Loading Loading @@ -61,7 +61,7 @@ public: /** Used to wrap monitored calls in start and stop functions using custom timer values */ template<typename T> auto watchThread(T func, uint32_t tid, uint32_t cycles, uint32_t cycleLength) { auto res = NULL; decltype(func()) res; if (cycles != mMaxCycles || cycleLength != mCycleLengthMs) { // Create another instance of the watchdog to prevent disruption Loading @@ -84,10 +84,9 @@ public: /** Used to wrap monitored calls in start and stop functions using class timer values */ template<typename T> auto watchThread(T func, uint32_t tid) { auto res = NULL; start(tid); res = func(); auto res = func(); stop(tid); return res; Loading Loading
apex/manifest.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media", "version": 330090000, "version": 339990000, "requireNativeLibs": [ "libandroid.so", "libbinder_ndk.so", Loading
apex/manifest_codec.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media.swcodec", "version": 330090000, "version": 339990000, "requireNativeLibs": [ ":sphal" ] Loading
services/audioflinger/AudioFlinger.cpp +13 −6 Original line number Diff line number Diff line Loading @@ -3889,17 +3889,24 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, goto Exit; } } else if (sessionId == AUDIO_SESSION_OUTPUT_STAGE) { if (!isAudioServerUid(callingUid)) { ALOGE("%s: only APM can create using AUDIO_SESSION_OUTPUT_STAGE", __func__); lStatus = PERMISSION_DENIED; goto Exit; } if (io == AUDIO_IO_HANDLE_NONE) { ALOGE("%s: APM must specify output when using AUDIO_SESSION_OUTPUT_STAGE", __func__); lStatus = BAD_VALUE; goto Exit; } PlaybackThread *thread = checkPlaybackThread_l(io); if (thread == nullptr) { ALOGE("%s: invalid output %d specified for AUDIO_SESSION_OUTPUT_STAGE", __func__, io); lStatus = BAD_VALUE; goto Exit; } if (!modifyDefaultAudioEffectsAllowed(adjAttributionSource) && !isAudioServerUid(callingUid)) { ALOGE("%s: effect on AUDIO_SESSION_OUTPUT_STAGE not granted for uid %d", __func__, callingUid); lStatus = PERMISSION_DENIED; goto Exit; } } else if (sessionId == AUDIO_SESSION_DEVICE) { if (!modifyDefaultAudioEffectsAllowed(adjAttributionSource)) { ALOGE("%s: device effect permission denied for uid %d", __func__, callingUid); Loading
services/camera/libcameraservice/CameraServiceWatchdog.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,10 @@ bool CameraServiceWatchdog::threadLoop() tidToCycleCounterMap[currentThreadId]++; if (tidToCycleCounterMap[currentThreadId] >= mMaxCycles) { ALOGW("CameraServiceWatchdog triggering kill for pid: %d", getpid()); kill(getpid(), SIGKILL); ALOGW("CameraServiceWatchdog triggering abort for pid: %d", getpid()); // We use abort here so we can get a tombstone for better // debugging. abort(); } } } Loading
services/camera/libcameraservice/CameraServiceWatchdog.h +3 −4 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ * and single call monitoring differently. See function documentation for * more details. */ #pragma once #include <chrono> #include <thread> #include <time.h> Loading Loading @@ -61,7 +61,7 @@ public: /** Used to wrap monitored calls in start and stop functions using custom timer values */ template<typename T> auto watchThread(T func, uint32_t tid, uint32_t cycles, uint32_t cycleLength) { auto res = NULL; decltype(func()) res; if (cycles != mMaxCycles || cycleLength != mCycleLengthMs) { // Create another instance of the watchdog to prevent disruption Loading @@ -84,10 +84,9 @@ public: /** Used to wrap monitored calls in start and stop functions using class timer values */ template<typename T> auto watchThread(T func, uint32_t tid) { auto res = NULL; start(tid); res = func(); auto res = func(); stop(tid); return res; Loading