From 74ffdaf7ebc29fcd7c99fcd5d941f5c764be5e30 Mon Sep 17 00:00:00 2001 From: Kensuke Miyagi Date: Tue, 26 Sep 2023 11:40:31 -0700 Subject: Fix deadlock between Tuner.requestDescrambler() and resource reclaim Bug: 302158911 Test: atest TunerTest Change-Id: If6e760619fe204a7cd58a39e8b462cb990c3ca6d --- media/java/android/media/tv/tuner/Tuner.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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(); } } -- cgit v1.2.3-59-g8ed1b