diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2015-02-01 22:54:25 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2015-03-26 12:45:21 +0100 |
commit | 7ccba62cb1defa708c3eb965c369dfe708d5c4ff (patch) | |
tree | d1e01e73695eae0ff1091ded51b1406ec6a684ce | |
parent | f1afb65d8163aee64271f03eabd553b989d57cef (diff) | |
download | neard-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.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -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); } |