commit | 722e719c4450b9ebd737088de51ca4552fc2934c | [log] [tgz] |
---|---|---|
author | Bill Richardson <wfrichar@google.com> | Thu Mar 21 15:46:51 2019 -0700 |
committer | Bill Richardson <wfrichar@google.com> | Thu Mar 21 16:40:00 2019 -0700 |
tree | f700d75f02379bce4c10fdad844b11170efda44f | |
parent | 4927a64db02fabf52635bf7ec4e019bce17b076f [diff] |
citadeld: Fix deadlock due to missing unique_lock scope In CitadelProxy::callApp(), we need to release the app-specific lock before we invoke _stats_collection.schedule(). Otherwise, the deferred callback may also try to grab that lock, causing deadlock: callApp: hold _appLocks[], call schedule() => block on _cv_mutex deferred: hold _cv_mutex, call cacheStats() => block on _appLocks[] Many thanks to ascull@ for figuring this out. Bug: 128522246 Test: By inspection, because I couldn't reproduce the bug myself Change-Id: I301605a5d2b078e2a7389a58d345e33cb081f5bf Signed-off-by: Bill Richardson <wfrichar@google.com>
Android communicates with Nugget apps in order to implement security related HALs. Currently, those HALs are Keymaster, Weaver and OemLock.
Apps that define a protobuf service will have an app interface class autogenerated. These classes will wrap a NuggetClient
. The generator can be found in the generator
directory.
Work in progress.
Currently, everything is synchronous and just exposes the call_application()
function from the Nugget transport API. In future, asynchronous calls may be desired. Support for this could be added in:
NuggetClient
on top of call_application()
citadel
This directory contains the components to support Citadel connected to Android.