Get page size should never fail (in the works case it fails later with wrong alignment).
authorMilan Broz <gmazyland@gmail.com>
Mon, 10 Dec 2012 16:47:06 +0000 (17:47 +0100)
committerMilan Broz <gmazyland@gmail.com>
Mon, 10 Dec 2012 16:47:06 +0000 (17:47 +0100)
lib/tcrypt/tcrypt.c
lib/utils.c
lib/utils_benchmark.c

index 1672c71..b1ebd05 100644 (file)
@@ -471,16 +471,12 @@ static int TCRYPT_init_hdr(struct crypt_device *cd,
                           struct crypt_params_tcrypt *params)
 {
        unsigned char pwd[TCRYPT_KEY_POOL_LEN] = {};
-       size_t passphrase_size, alignment;
+       size_t passphrase_size;
        char *key;
        unsigned int i, skipped = 0;
        int r = -EINVAL, legacy_modes;
 
-       alignment = crypt_getpagesize();
-       if (alignment < 0)
-               return -EINVAL;
-
-       if (posix_memalign((void*)&key, alignment, TCRYPT_HDR_KEY_LEN))
+       if (posix_memalign((void*)&key, crypt_getpagesize(), TCRYPT_HDR_KEY_LEN))
                return -ENOMEM;
 
        if (params->keyfiles_count)
index 2231522..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)
index f392382..4ee0c03 100644 (file)
@@ -128,14 +128,9 @@ static int cipher_perf(struct cipher_perf *cp,
 {
        long ms_enc, ms_dec, ms;
        int repeat_enc, repeat_dec;
-       size_t alignment;
        void *buf = NULL;
 
-       alignment = crypt_getpagesize();
-       if (alignment < 0)
-               return -EINVAL;
-
-       if (posix_memalign(&buf, alignment, cp->buffer_size))
+       if (posix_memalign(&buf, crypt_getpagesize(), cp->buffer_size))
                return -ENOMEM;
 
        ms_enc = 0;