Loading services/audioflinger/AudioFlinger.cpp +1 −5 Original line number Original line Diff line number Diff line Loading @@ -1067,8 +1067,6 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, clientPid = callingPid; clientPid = callingPid; adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage( adjAttributionSource); audio_session_t sessionId = input.sessionId; audio_session_t sessionId = input.sessionId; if (sessionId == AUDIO_SESSION_ALLOCATE) { if (sessionId == AUDIO_SESSION_ALLOCATE) { Loading Loading @@ -2291,8 +2289,7 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, __func__, callingUid, callingPid, currentPid); __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage( adjAttributionSource); // we don't yet support anything other than linear PCM // we don't yet support anything other than linear PCM if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { ALOGE("createRecord() invalid format %#x", input.config.format); ALOGE("createRecord() invalid format %#x", input.config.format); Loading Loading @@ -3925,7 +3922,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); currentPid = callingPid; currentPid = callingPid; } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage(adjAttributionSource); ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", adjAttributionSource.pid, effectClient.get(), priority, sessionId, io, adjAttributionSource.pid, effectClient.get(), priority, sessionId, io, Loading services/audioflinger/Threads.cpp +6 −4 Original line number Original line Diff line number Diff line Loading @@ -8315,6 +8315,8 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe audio_input_flags_t inputFlags = mInput->flags; audio_input_flags_t inputFlags = mInput->flags; audio_input_flags_t requestedFlags = *flags; audio_input_flags_t requestedFlags = *flags; uint32_t sampleRate; uint32_t sampleRate; AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage( attributionSource); lStatus = initCheck(); lStatus = initCheck(); if (lStatus != NO_ERROR) { if (lStatus != NO_ERROR) { Loading @@ -8329,7 +8331,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe } } if (maxSharedAudioHistoryMs != 0) { if (maxSharedAudioHistoryMs != 0) { if (!captureHotwordAllowed(attributionSource)) { if (!captureHotwordAllowed(checkedAttributionSource)) { lStatus = PERMISSION_DENIED; lStatus = PERMISSION_DENIED; goto Exit; goto Exit; } } Loading Loading @@ -8450,16 +8452,16 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); int32_t startFrames = -1; int32_t startFrames = -1; if (!mSharedAudioPackageName.empty() if (!mSharedAudioPackageName.empty() && mSharedAudioPackageName == attributionSource.packageName && mSharedAudioPackageName == checkedAttributionSource.packageName && mSharedAudioSessionId == sessionId && mSharedAudioSessionId == sessionId && captureHotwordAllowed(attributionSource)) { && captureHotwordAllowed(checkedAttributionSource)) { startFrames = mSharedAudioStartFrames; startFrames = mSharedAudioStartFrames; } } track = new RecordTrack(this, client, attr, sampleRate, track = new RecordTrack(this, client, attr, sampleRate, format, channelMask, frameCount, format, channelMask, frameCount, nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid, nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid, attributionSource, *flags, TrackBase::TYPE_DEFAULT, portId, checkedAttributionSource, *flags, TrackBase::TYPE_DEFAULT, portId, startFrames); startFrames); lStatus = track->initCheck(); lStatus = track->initCheck(); Loading services/audioflinger/Tracks.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -529,7 +529,10 @@ AudioFlinger::PlaybackThread::OpPlayAudioMonitor::createIfNeeded( id, attr.flags); id, attr.flags); return nullptr; return nullptr; } } return new OpPlayAudioMonitor(attributionSource, attr.usage, id); AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage( attributionSource); return new OpPlayAudioMonitor(checkedAttributionSource, attr.usage, id); } } AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor( AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor( Loading services/camera/libcameraservice/common/Camera2ClientBase.cpp +8 −4 Original line number Original line Diff line number Diff line Loading @@ -41,8 +41,6 @@ namespace android { namespace android { const static size_t kDisconnectTimeoutMs = 2500; using namespace camera2; using namespace camera2; // Interface used by CameraService // Interface used by CameraService Loading Loading @@ -252,10 +250,16 @@ status_t Camera2ClientBase<TClientBase>::dumpDevice( template <typename TClientBase> template <typename TClientBase> binder::Status Camera2ClientBase<TClientBase>::disconnect() { binder::Status Camera2ClientBase<TClientBase>::disconnect() { if (mCameraServiceWatchdog != nullptr) { if (mCameraServiceWatchdog != nullptr && mDevice != nullptr) { // Timer for the disconnect call should be greater than getExpectedInFlightDuration // since this duration is used to error handle methods in the disconnect sequence // thus allowing existing error handling methods to execute first uint64_t maxExpectedDuration = ns2ms(mDevice->getExpectedInFlightDuration() + kBufferTimeDisconnectNs); // Initialization from hal succeeded, time disconnect. // Initialization from hal succeeded, time disconnect. return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(), return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(), kDisconnectTimeoutMs / kCycleLengthMs, kCycleLengthMs); maxExpectedDuration / kCycleLengthMs, kCycleLengthMs); } } return disconnectImpl(); return disconnectImpl(); } } Loading services/camera/libcameraservice/common/Camera2ClientBase.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -132,6 +132,9 @@ public: protected: protected: // Used for watchdog timeout to monitor disconnect static const nsecs_t kBufferTimeDisconnectNs = 3000000000; // 3 sec. // The PID provided in the constructor call // The PID provided in the constructor call pid_t mInitialClientPid; pid_t mInitialClientPid; bool mOverrideForPerfClass = false; bool mOverrideForPerfClass = false; Loading Loading
services/audioflinger/AudioFlinger.cpp +1 −5 Original line number Original line Diff line number Diff line Loading @@ -1067,8 +1067,6 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, clientPid = callingPid; clientPid = callingPid; adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage( adjAttributionSource); audio_session_t sessionId = input.sessionId; audio_session_t sessionId = input.sessionId; if (sessionId == AUDIO_SESSION_ALLOCATE) { if (sessionId == AUDIO_SESSION_ALLOCATE) { Loading Loading @@ -2291,8 +2289,7 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, __func__, callingUid, callingPid, currentPid); __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage( adjAttributionSource); // we don't yet support anything other than linear PCM // we don't yet support anything other than linear PCM if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { ALOGE("createRecord() invalid format %#x", input.config.format); ALOGE("createRecord() invalid format %#x", input.config.format); Loading Loading @@ -3925,7 +3922,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid)); currentPid = callingPid; currentPid = callingPid; } } adjAttributionSource = AudioFlinger::checkAttributionSourcePackage(adjAttributionSource); ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", adjAttributionSource.pid, effectClient.get(), priority, sessionId, io, adjAttributionSource.pid, effectClient.get(), priority, sessionId, io, Loading
services/audioflinger/Threads.cpp +6 −4 Original line number Original line Diff line number Diff line Loading @@ -8315,6 +8315,8 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe audio_input_flags_t inputFlags = mInput->flags; audio_input_flags_t inputFlags = mInput->flags; audio_input_flags_t requestedFlags = *flags; audio_input_flags_t requestedFlags = *flags; uint32_t sampleRate; uint32_t sampleRate; AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage( attributionSource); lStatus = initCheck(); lStatus = initCheck(); if (lStatus != NO_ERROR) { if (lStatus != NO_ERROR) { Loading @@ -8329,7 +8331,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe } } if (maxSharedAudioHistoryMs != 0) { if (maxSharedAudioHistoryMs != 0) { if (!captureHotwordAllowed(attributionSource)) { if (!captureHotwordAllowed(checkedAttributionSource)) { lStatus = PERMISSION_DENIED; lStatus = PERMISSION_DENIED; goto Exit; goto Exit; } } Loading Loading @@ -8450,16 +8452,16 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); int32_t startFrames = -1; int32_t startFrames = -1; if (!mSharedAudioPackageName.empty() if (!mSharedAudioPackageName.empty() && mSharedAudioPackageName == attributionSource.packageName && mSharedAudioPackageName == checkedAttributionSource.packageName && mSharedAudioSessionId == sessionId && mSharedAudioSessionId == sessionId && captureHotwordAllowed(attributionSource)) { && captureHotwordAllowed(checkedAttributionSource)) { startFrames = mSharedAudioStartFrames; startFrames = mSharedAudioStartFrames; } } track = new RecordTrack(this, client, attr, sampleRate, track = new RecordTrack(this, client, attr, sampleRate, format, channelMask, frameCount, format, channelMask, frameCount, nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid, nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid, attributionSource, *flags, TrackBase::TYPE_DEFAULT, portId, checkedAttributionSource, *flags, TrackBase::TYPE_DEFAULT, portId, startFrames); startFrames); lStatus = track->initCheck(); lStatus = track->initCheck(); Loading
services/audioflinger/Tracks.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -529,7 +529,10 @@ AudioFlinger::PlaybackThread::OpPlayAudioMonitor::createIfNeeded( id, attr.flags); id, attr.flags); return nullptr; return nullptr; } } return new OpPlayAudioMonitor(attributionSource, attr.usage, id); AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage( attributionSource); return new OpPlayAudioMonitor(checkedAttributionSource, attr.usage, id); } } AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor( AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor( Loading
services/camera/libcameraservice/common/Camera2ClientBase.cpp +8 −4 Original line number Original line Diff line number Diff line Loading @@ -41,8 +41,6 @@ namespace android { namespace android { const static size_t kDisconnectTimeoutMs = 2500; using namespace camera2; using namespace camera2; // Interface used by CameraService // Interface used by CameraService Loading Loading @@ -252,10 +250,16 @@ status_t Camera2ClientBase<TClientBase>::dumpDevice( template <typename TClientBase> template <typename TClientBase> binder::Status Camera2ClientBase<TClientBase>::disconnect() { binder::Status Camera2ClientBase<TClientBase>::disconnect() { if (mCameraServiceWatchdog != nullptr) { if (mCameraServiceWatchdog != nullptr && mDevice != nullptr) { // Timer for the disconnect call should be greater than getExpectedInFlightDuration // since this duration is used to error handle methods in the disconnect sequence // thus allowing existing error handling methods to execute first uint64_t maxExpectedDuration = ns2ms(mDevice->getExpectedInFlightDuration() + kBufferTimeDisconnectNs); // Initialization from hal succeeded, time disconnect. // Initialization from hal succeeded, time disconnect. return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(), return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(), kDisconnectTimeoutMs / kCycleLengthMs, kCycleLengthMs); maxExpectedDuration / kCycleLengthMs, kCycleLengthMs); } } return disconnectImpl(); return disconnectImpl(); } } Loading
services/camera/libcameraservice/common/Camera2ClientBase.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -132,6 +132,9 @@ public: protected: protected: // Used for watchdog timeout to monitor disconnect static const nsecs_t kBufferTimeDisconnectNs = 3000000000; // 3 sec. // The PID provided in the constructor call // The PID provided in the constructor call pid_t mInitialClientPid; pid_t mInitialClientPid; bool mOverrideForPerfClass = false; bool mOverrideForPerfClass = false; Loading