Fix remove-before-add for IpSecService RefcountedResource

This patch fixes a bug where if a binder dies before the linkToDeath
call, the cleanup will be performed before the entry is added to the
array. While it is safe in that quotas and tracking performs as per
normal, the RefcountedRecord may not be cleaned up.

Rethrowing this exception is safe, since the only paths that would hit
this are all on binder threads coming from applications. Further, it
seems there is only one real way of this getting hit - if the app that
called the creation died during the binder call.

Bug: 126802451
Test: Compiled, CTS tests passing
Change-Id: I6db75853da9f29e1573512e26351623f22770c5d
This commit is contained in:
Benedict Wong
2019-02-28 20:28:48 -08:00
parent 60eacd60d1
commit 04738f5b07

View File

@@ -207,6 +207,7 @@ public class IpSecService extends IIpSecService.Stub {
mBinder.linkToDeath(this, 0); mBinder.linkToDeath(this, 0);
} catch (RemoteException e) { } catch (RemoteException e) {
binderDied(); binderDied();
e.rethrowFromSystemServer();
} }
} }
} }