diff options
| author | 2023-09-26 11:40:31 -0700 | |
|---|---|---|
| committer | 2023-09-26 11:40:31 -0700 | |
| commit | 74ffdaf7ebc29fcd7c99fcd5d941f5c764be5e30 (patch) | |
| tree | 83fd0d67c08224c0d7cbcf9365c200bcf2a37d1d | |
| parent | f6e2ca664c360adc69e4920613c04a8c7ad637ce (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.java | 5 |
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(); } } |