aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2015-02-01 22:54:25 +0100
committerSamuel Ortiz <sameo@linux.intel.com>2015-03-26 12:45:21 +0100
commit7ccba62cb1defa708c3eb965c369dfe708d5c4ff (patch)
treed1e01e73695eae0ff1091ded51b1406ec6a684ce
parentf1afb65d8163aee64271f03eabd553b989d57cef (diff)
downloadneard-7ccba62cb1defa708c3eb965c369dfe708d5c4ff.tar.gz
se: Handle previously enabled secure elements
When seeld terminates but the devices does not reboot, the secure element may be already up when seeld re-starts. In that case, do not send an Enabled error, but gracefully fall back to the right enabled state.
-rw-r--r--se/se.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/se/se.c b/se/se.c
index 1280a3f..4890489 100644
--- a/se/se.c
+++ b/se/se.c
@@ -406,6 +406,9 @@ static DBusMessage *set_property(DBusConnection *conn,
err = se_toggle(se, enabled);
if (err < 0) {
if (err == -EALREADY) {
+ if (se->enabled != enabled)
+ goto ignore_err;
+
if (enabled)
return __near_error_already_enabled(msg);
else
@@ -415,8 +418,11 @@ static DBusMessage *set_property(DBusConnection *conn,
return __near_error_failed(msg, -err);
}
+ignore_err:
se->enabled = enabled;
- g_idle_add(__seel_ace_add, se);
+
+ if (enabled)
+ g_idle_add(__seel_ace_add, se);
} else {
return __near_error_invalid_property(msg);
}