From cb533c5885c4ebc2760cff47049a15e8c6ed4722 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Thu, 8 Mar 2018 13:28:58 -0800 Subject: Added Locking for MmTelFeature oneway binder methods were not locked, causing the possible condition where the method was called again before the previous call to that method completed. Bug: 74119196 Test: Manual, Telephony Unit Testing Change-Id: I794d5f7ea6f091ca83aa71a438c204ac97fad7a1 --- .../android/telephony/ims/feature/MmTelFeature.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java index 2fffd36a1a4f..a98fa23fd21c 100644 --- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java +++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java @@ -139,34 +139,44 @@ public class MmTelFeature extends ImsFeature { @Override public int queryCapabilityStatus() throws RemoteException { - return MmTelFeature.this.queryCapabilityStatus().mCapabilities; + synchronized (mLock) { + return MmTelFeature.this.queryCapabilityStatus().mCapabilities; + } } @Override public void addCapabilityCallback(IImsCapabilityCallback c) { + // no need to lock, structure already handles multithreading. MmTelFeature.this.addCapabilityCallback(c); } @Override public void removeCapabilityCallback(IImsCapabilityCallback c) { + // no need to lock, structure already handles multithreading. MmTelFeature.this.removeCapabilityCallback(c); } @Override public void changeCapabilitiesConfiguration(CapabilityChangeRequest request, IImsCapabilityCallback c) throws RemoteException { - MmTelFeature.this.requestChangeEnabledCapabilities(request, c); + synchronized (mLock) { + MmTelFeature.this.requestChangeEnabledCapabilities(request, c); + } } @Override public void queryCapabilityConfiguration(int capability, int radioTech, IImsCapabilityCallback c) { - queryCapabilityConfigurationInternal(capability, radioTech, c); + synchronized (mLock) { + queryCapabilityConfigurationInternal(capability, radioTech, c); + } } @Override public void setSmsListener(IImsSmsListener l) throws RemoteException { - MmTelFeature.this.setSmsListener(l); + synchronized (mLock) { + MmTelFeature.this.setSmsListener(l); + } } @Override -- cgit v1.2.3-59-g8ed1b