diff --git a/Volume.cpp b/Volume.cpp
index c290200..80552b6 100644
--- a/Volume.cpp
+++ b/Volume.cpp
@@ -378,14 +378,14 @@
 
        if (n != 1) {
            /* We only expect one device node returned when mounting encryptable volumes */
-           SLOGE("Too many device nodes returned when mounting %d\n", getMountpoint());
+           SLOGE("Too many device nodes returned when mounting %s\n", getMountpoint());
            return -1;
        }
 
        if (cryptfs_setup_volume(getLabel(), MAJOR(deviceNodes[0]), MINOR(deviceNodes[0]),
                                 new_sys_path, sizeof(new_sys_path),
                                 &new_major, &new_minor)) {
-           SLOGE("Cannot setup encryption mapping for %d\n", getMountpoint());
+           SLOGE("Cannot setup encryption mapping for %s\n", getMountpoint());
            return -1;
        }
        /* We now have the new sysfs path for the decrypted block device, and the
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 117eee0..19fb29a 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -91,7 +91,7 @@
         errno = ESPIPE;
         return NULL;
     } else if (len < MD5_ASCII_LENGTH_PLUS_NULL) {
-        SLOGE("Target hash buffer size < %d bytes (%d)",
+        SLOGE("Target hash buffer size < %d bytes (%zu)",
                 MD5_ASCII_LENGTH_PLUS_NULL, len);
         errno = ESPIPE;
         return NULL;
@@ -930,7 +930,7 @@
 
     int written = snprintf(mountPoint, sizeof(mountPoint), "%s/%s", Volume::ASECDIR, id);
     if ((written < 0) || (size_t(written) >= sizeof(mountPoint))) {
-        SLOGE("ASEC mount failed: couldn't construct mountpoint", id);
+        SLOGE("ASEC mount failed for %s: couldn't construct mountpoint", id);
         return -1;
     }
 
@@ -1077,7 +1077,7 @@
 
     int written = snprintf(mountPoint, sizeof(mountPoint), "%s/%s", Volume::LOOPDIR, idHash);
     if ((written < 0) || (size_t(written) >= sizeof(mountPoint))) {
-        SLOGE("OBB mount failed: couldn't construct mountpoint", img);
+        SLOGE("OBB mount failed for %s: couldn't construct mountpoint", img);
         return -1;
     }
 
diff --git a/cryptfs.c b/cryptfs.c
index 6247014..a742a63 100644
--- a/cryptfs.c
+++ b/cryptfs.c
@@ -276,7 +276,7 @@
   /* If the keys are kept on a raw block device, do not try to truncate it. */
   if (S_ISREG(statbuf.st_mode)) {
     if (ftruncate(fd, 0x4000)) {
-      SLOGE("Cannot set footer file size\n", fname);
+      SLOGE("Cannot set footer file size\n");
       goto errout;
     }
   }
