diff --git a/Loop.cpp b/Loop.cpp
index 335ca13..92f1e97 100644
--- a/Loop.cpp
+++ b/Loop.cpp
@@ -16,24 +16,24 @@
 
 #define ATRACE_TAG ATRACE_TAG_PACKAGE_MANAGER
 
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
 #include <string.h>
+#include <unistd.h>
 
-#include <sys/mount.h>
-#include <sys/types.h>
-#include <sys/stat.h>
 #include <sys/ioctl.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 
 #include <linux/kdev_t.h>
 
 #include <android-base/logging.h>
-#include <android-base/strings.h>
 #include <android-base/stringprintf.h>
+#include <android-base/strings.h>
 #include <android-base/unique_fd.h>
 #include <utils/Trace.h>
 
@@ -79,7 +79,7 @@
 
     struct loop_info64 li;
     memset(&li, 0, sizeof(li));
-    strlcpy((char*) li.lo_crypt_name, kVoldPrefix, LO_NAME_SIZE);
+    strlcpy((char*)li.lo_crypt_name, kVoldPrefix, LO_NAME_SIZE);
     if (ioctl(device_fd.get(), LOOP_SET_STATUS64, &li) == -1) {
         PLOG(ERROR) << "Failed to LOOP_SET_STATUS64";
         return -errno;
@@ -88,7 +88,7 @@
     return 0;
 }
 
-int Loop::destroyByDevice(const char *loopDevice) {
+int Loop::destroyByDevice(const char* loopDevice) {
     int device_fd;
 
     device_fd = open(loopDevice, O_RDONLY | O_CLOEXEC);
@@ -138,7 +138,7 @@
             continue;
         }
 
-        auto id = std::string((char*) li.lo_crypt_name);
+        auto id = std::string((char*)li.lo_crypt_name);
         if (android::base::StartsWith(id, kVoldPrefix)) {
             LOG(DEBUG) << "Tearing down stale loop device at " << path << " named " << id;
 
@@ -153,7 +153,7 @@
     return 0;
 }
 
-int Loop::createImageFile(const char *file, unsigned long numSectors) {
+int Loop::createImageFile(const char* file, unsigned long numSectors) {
     unique_fd fd(open(file, O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, 0600));
     if (fd.get() == -1) {
         PLOG(ERROR) << "Failed to create image " << file;
@@ -169,7 +169,7 @@
     return 0;
 }
 
-int Loop::resizeImageFile(const char *file, unsigned long numSectors) {
+int Loop::resizeImageFile(const char* file, unsigned long numSectors) {
     int fd;
 
     if ((fd = open(file, O_RDWR | O_CLOEXEC)) < 0) {
