Reduce chance of zero-length keystore files

The open/write/close/rename pattern can result in
zero-length files on some file systems if crash or power
loss occurs. Prefer open/write/fsync/close/rename.

BUG: https://code.google.com/p/android/issues/detail?id=207607
Change-Id: I2742c3ab967d5cf254b22cffb5164881315623d5
diff --git a/keystore/keystore_utils.cpp b/keystore/keystore_utils.cpp
index b653dd8..4617afd 100644
--- a/keystore/keystore_utils.cpp
+++ b/keystore/keystore_utils.cpp
@@ -51,6 +51,10 @@
         data += n;
         remaining -= n;
     }
+    if (TEMP_FAILURE_RETRY(fsync(fd)) == -1) {
+        ALOGW("fsync failed: %s", strerror(errno));
+        return -1;
+    }
     return size;
 }