Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74ffdaf7 authored by Kensuke Miyagi's avatar Kensuke Miyagi
Browse files

Fix deadlock between Tuner.requestDescrambler() and resource reclaim

Bug: 302158911
Test: atest TunerTest
Change-Id: If6e760619fe204a7cd58a39e8b462cb990c3ca6d
parent f6e2ca66
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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();
        }
    }