summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kensuke Miyagi <kemiyagi@google.com> 2023-09-26 11:40:31 -0700
committer Kensuke Miyagi <kemiyagi@google.com> 2023-09-26 11:40:31 -0700
commit74ffdaf7ebc29fcd7c99fcd5d941f5c764be5e30 (patch)
tree83fd0d67c08224c0d7cbcf9365c200bcf2a37d1d
parentf6e2ca664c360adc69e4920613c04a8c7ad637ce (diff)
Fix deadlock between Tuner.requestDescrambler() and resource reclaim
Bug: 302158911 Test: atest TunerTest Change-Id: If6e760619fe204a7cd58a39e8b462cb990c3ca6d
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 9924fae26194..09f09b94ac0d 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -2409,13 +2409,16 @@ public class Tuner implements AutoCloseable {
@RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER)
@Nullable
public Descrambler openDescrambler() {
+ acquireTRMSLock("openDescrambler()");
mDemuxLock.lock();
try {
- if (!checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_DEMUX, mDemuxLock)) {
+ // no need to unlock mDemuxLock (so pass null instead) as TRMS lock is already acquired
+ if (!checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_DEMUX, null)) {
return null;
}
return requestDescrambler();
} finally {
+ releaseTRMSLock();
mDemuxLock.unlock();
}
}