From 0163607fa3e9633e4c3522217cef1d983714fc44 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Sun, 13 May 2018 13:53:14 -0700 Subject: [PATCH] Revert of "Prevent race conditions between decrypt and close session" [ Original CL http://ag/3890635, Merge of http://go/wvgerrit/50340 ] The original fix was not sufficient to address all race conditions. A subsequent CL will address them. Bug: 73781703 Bug: 79158083 Bug: 79262108 Test: WV unit/integration tests, GTS GtsMediaTestCases tests and 24 hours of continuous Netflix playback. Change-Id: I869c22a250e2467b3d49935815e4157dc012fff5 --- libwvdrmengine/cdm/core/include/cdm_session.h | 5 +---- libwvdrmengine/cdm/core/include/wv_cdm_types.h | 1 - libwvdrmengine/cdm/core/src/cdm_session.cpp | 10 ---------- libwvdrmengine/cdm/core/test/test_printers.cpp | 2 -- libwvdrmengine/include/mapErrors-inl.h | 1 - libwvdrmengine/include_hidl/mapErrors-inl.h | 1 - 6 files changed, 1 insertion(+), 19 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/cdm_session.h b/libwvdrmengine/cdm/core/include/cdm_session.h index 854f459d..113c9e96 100644 --- a/libwvdrmengine/cdm/core/include/cdm_session.h +++ b/libwvdrmengine/cdm/core/include/cdm_session.h @@ -37,7 +37,7 @@ class CdmSession { CdmSession(FileSystem* file_system, metrics::SessionMetrics* metrics); virtual ~CdmSession(); - void Close(); + void Close() { closed_ = true; } bool IsClosed() { return closed_; } // Initializes this instance of CdmSession with the given property set. @@ -263,9 +263,6 @@ class CdmSession { bool mock_license_parser_in_use_; bool mock_policy_engine_in_use_; - // Lock to avoid race conditions between Close() and Decrypt() - Lock close_lock_; - CORE_DISALLOW_COPY_AND_ASSIGN(CdmSession); }; diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index 19fc6310..bead3941 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -333,7 +333,6 @@ enum CdmResponseType { GET_PROVISIONING_METHOD_ERROR = 289, SESSION_NOT_FOUND_17 = 290, SESSION_NOT_FOUND_18 = 291, - SESSION_CLOSED_1 = 292, }; enum CdmKeyStatus { diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 5e71f747..55808aac 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -72,11 +72,6 @@ CdmSession::~CdmSession() { } } -void CdmSession::Close() { - AutoLock lock(close_lock_); - closed_ = true; -} - CdmResponseType CdmSession::Init( CdmClientPropertySet* cdm_client_property_set) { return Init(cdm_client_property_set, NULL, NULL); @@ -581,11 +576,6 @@ CdmResponseType CdmSession::Decrypt(const CdmDecryptionParameters& params) { return NOT_INITIALIZED_ERROR; } - AutoLock lock(close_lock_); - if (IsClosed()) { - return SESSION_CLOSED_1; - } - // Playback may not begin until either the start time passes or the license // is updated, so we treat this Decrypt call as invalid. if (params.is_encrypted) { diff --git a/libwvdrmengine/cdm/core/test/test_printers.cpp b/libwvdrmengine/cdm/core/test/test_printers.cpp index 0dc40bf6..475c5f89 100644 --- a/libwvdrmengine/cdm/core/test/test_printers.cpp +++ b/libwvdrmengine/cdm/core/test/test_printers.cpp @@ -599,8 +599,6 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { break; case SESSION_NOT_FOUND_18: *os << "SESSION_NOT_FOUND_18"; break; - case SESSION_CLOSED_1: *os << "SESSION_CLOSED_1"; - break; default: *os << "Unknown CdmResponseType"; break; diff --git a/libwvdrmengine/include/mapErrors-inl.h b/libwvdrmengine/include/mapErrors-inl.h index 8ebc454a..029c11d9 100644 --- a/libwvdrmengine/include/mapErrors-inl.h +++ b/libwvdrmengine/include/mapErrors-inl.h @@ -230,7 +230,6 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) { case wvcdm::SESSION_NOT_FOUND_10: case wvcdm::SESSION_NOT_FOUND_17: case wvcdm::SESSION_NOT_FOUND_18: - case wvcdm::SESSION_CLOSED_1: return android::ERROR_DRM_SESSION_NOT_OPENED; case wvcdm::SESSION_KEYS_NOT_FOUND: return kSessionKeysNotFound; diff --git a/libwvdrmengine/include_hidl/mapErrors-inl.h b/libwvdrmengine/include_hidl/mapErrors-inl.h index 18503efb..1637e626 100644 --- a/libwvdrmengine/include_hidl/mapErrors-inl.h +++ b/libwvdrmengine/include_hidl/mapErrors-inl.h @@ -58,7 +58,6 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) { case wvcdm::SESSION_NOT_FOUND_10: case wvcdm::SESSION_NOT_FOUND_17: case wvcdm::SESSION_NOT_FOUND_18: - case wvcdm::SESSION_CLOSED_1: return Status::ERROR_DRM_SESSION_NOT_OPENED; case wvcdm::DECRYPT_ERROR: