Get page size should never fail (in the works case it fails later with wrong alignment).
[platform/upstream/cryptsetup.git] / lib / utils.c
index de44e8b..eef7891 100644 (file)
@@ -30,7 +30,8 @@
 
 unsigned crypt_getpagesize(void)
 {
-       return (unsigned)sysconf(_SC_PAGESIZE);
+       long r = sysconf(_SC_PAGESIZE);
+       return r < 0 ? DEFAULT_MEM_ALIGNMENT : r;
 }
 
 static int get_alignment(int fd)
@@ -105,7 +106,7 @@ ssize_t write_blockwise(int fd, int bsize, void *orig_buf, size_t count)
                memcpy(hangover_buf, (char*)buf + solid, hangover);
 
                r = write(fd, hangover_buf, bsize);
-               if (r < 0 || r != bsize)
+               if (r < 0 || r < hangover)
                        goto out;
        }
        ret = count;
@@ -145,7 +146,7 @@ ssize_t read_blockwise(int fd, int bsize, void *orig_buf, size_t count) {
                if (!hangover_buf)
                        goto out;
                r = read(fd, hangover_buf, bsize);
-               if (r <  0 || r != bsize)
+               if (r <  0 || r < hangover)
                        goto out;
 
                memcpy((char *)buf + solid, hangover_buf, hangover);
@@ -238,7 +239,7 @@ int crypt_memlock_inc(struct crypt_device *ctx)
                        log_err(ctx, _("Cannot get process priority.\n"));
                else
                        if (setpriority(PRIO_PROCESS, 0, DEFAULT_PROCESS_PRIORITY))
-                               log_err(ctx, _("setpriority %d failed: %s\n"),
+                               log_dbg("setpriority %d failed: %s",
                                        DEFAULT_PROCESS_PRIORITY, strerror(errno));
        }
        return _memlock_count ? 1 : 0;
@@ -251,7 +252,7 @@ int crypt_memlock_dec(struct crypt_device *ctx)
                if (munlockall() == -1)
                        log_err(ctx, _("Cannot unlock memory.\n"));
                if (setpriority(PRIO_PROCESS, 0, _priority))
-                       log_err(ctx, _("setpriority %d failed: %s\n"), _priority, strerror(errno));
+                       log_dbg("setpriority %d failed: %s", _priority, strerror(errno));
        }
        return _memlock_count ? 1 : 0;
 }