summaryrefslogtreecommitdiff
path: root/services/incremental/IncrementalService.cpp
diff options
context:
space:
mode:
author Xin Li <delphij@google.com> 2023-06-21 15:15:57 -0700
committer Xin Li <delphij@google.com> 2023-06-21 15:15:57 -0700
commita8b689d92e270a6cd75de96de87a350838cbcb7e (patch)
treea45804f9bc07a5b2a97f121ecc9658812686b8ab /services/incremental/IncrementalService.cpp
parentd479859c8e04953b016d1d798db6a255f9d91416 (diff)
parent0ed71237877dc939def29501308731807264b841 (diff)
Merge Android 13 QPR3
Bug: 275386652 Merged-In: I83085719de501d5c4e9fa583f51095acf045843f Change-Id: Ia85e11360641496c84efcf196f9924c6d2b9a859
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r--services/incremental/IncrementalService.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 9c9b363b948e..7ed95991642f 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -2816,6 +2816,12 @@ bool IncrementalService::DataLoaderStub::fsmStep() {
binder::Status IncrementalService::DataLoaderStub::onStatusChanged(MountId mountId, int newStatus) {
if (!isValid()) {
+ if (newStatus == IDataLoaderStatusListener::DATA_LOADER_BOUND) {
+ // Async "bound" came to already destroyed stub.
+ // Unbind immediately to avoid invalid stub sitting around in DataLoaderManagerService.
+ mService.mDataLoaderManager->unbindFromDataLoader(mountId);
+ return binder::Status::ok();
+ }
return binder::Status::
fromServiceSpecificError(-EINVAL, "onStatusChange came to invalid DataLoaderStub");
}