]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix alignment mess
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 27 Jun 2019 10:17:42 +0000 (11:17 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 27 Jun 2019 10:17:42 +0000 (11:17 +0100)
Issue: #2945

contrib/t1ha/t1ha.h
src/libcryptobox/cryptobox.h
src/libserver/worker_util.c
src/libutil/mem_pool.c
src/libutil/mem_pool.h

index 3d267838ce0710cf5381d24186c2ab07ceccacdd..e5f2dadfb401f9871d00b977d24ef2d06ad7d9c1 100644 (file)
 #define T1HA_API
 #endif /* T1HA_API */
 
-#if defined(_MSC_VER)
-#define T1HA_ALIGN_PREFIX __declspec(align(16)) /* required only for SIMD */
-#else
 #define T1HA_ALIGN_PREFIX
-#endif /* _MSC_VER */
-
-#if defined(__GNUC__)
-#define T1HA_ALIGN_SUFFIX                                                      \
-  __attribute__((aligned(16))) /* required only for SIMD */
-#else
 #define T1HA_ALIGN_SUFFIX
-#endif /* GCC x86 */
 
 #ifdef __cplusplus
 extern "C" {
index b78830ae1195ee2a76c82bbe432ada2f58b082b7..adf4907944cc69b64002071c0656df0e39ffe7d2 100644 (file)
@@ -353,8 +353,8 @@ enum rspamd_cryptobox_fast_hash_type {
 };
 
 /* Non crypto hash IUF interface */
-typedef struct RSPAMD_ALIGNED(16) rspamd_cryptobox_fast_hash_state_s  {
-       RSPAMD_ALIGNED(16) guint64 opaque[11];
+typedef struct rspamd_cryptobox_fast_hash_state_s  {
+       guint64 opaque[11];
        enum rspamd_cryptobox_fast_hash_type type;
 } rspamd_cryptobox_fast_hash_state_t;
 
index 5c5d41b9012515f8f8bd97e0a426af537548eea1..3ad528d1ec2e5431341e71f9d5dbc6999d50e257 100644 (file)
 #include <sys/ucontext.h>
 #endif
 
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
 #include "contrib/libev/ev.h"
 
 static void rspamd_worker_ignore_signal (struct rspamd_worker_signal_handler *);
index b7ce281c4350588555bf4ea316b0a84886c986ef..c03e7ae2cbffcdbabfaf8836ad101253302b2979 100644 (file)
@@ -105,7 +105,7 @@ static gboolean always_malloc = FALSE;
 static gsize
 pool_chain_free (struct _pool_chain *chain)
 {
-       gint64 occupied = chain->pos - chain->begin + MEM_ALIGNMENT;
+       gint64 occupied = chain->pos - chain->begin + MIN_MEM_ALIGNMENT;
 
        return (occupied < (gint64)chain->slice_size ?
                        chain->slice_size - occupied : 0);
@@ -169,7 +169,7 @@ static struct _pool_chain *
 rspamd_mempool_chain_new (gsize size, enum rspamd_mempool_chain_type pool_type)
 {
        struct _pool_chain *chain;
-       gsize total_size = size + sizeof (struct _pool_chain) + MEM_ALIGNMENT,
+       gsize total_size = size + sizeof (struct _pool_chain) + MIN_MEM_ALIGNMENT,
                        optimal_size = 0;
        gpointer map;
 
@@ -235,7 +235,7 @@ rspamd_mempool_chain_new (gsize size, enum rspamd_mempool_chain_type pool_type)
                g_atomic_int_inc (&mem_pool_stat->chunks_allocated);
        }
 
-       chain->pos = align_ptr (chain->begin, MEM_ALIGNMENT);
+       chain->pos = align_ptr (chain->begin, MIN_MEM_ALIGNMENT);
        chain->slice_size = total_size - sizeof (struct _pool_chain);
        chain->lock = NULL;
 
@@ -369,7 +369,7 @@ rspamd_mempool_new_ (gsize size, const gchar *tag, const gchar *loc)
 static void *
 memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size,
                                                  enum rspamd_mempool_chain_type pool_type)
-RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 
 static void *
 memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size,
@@ -405,7 +405,7 @@ memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size,
 
                if (cur == NULL || free < size) {
                        /* Allocate new chain element */
-                       if (pool->elt_len >= size + MEM_ALIGNMENT) {
+                       if (pool->elt_len >= size + MIN_MEM_ALIGNMENT) {
                                pool->entry->elts[pool->entry->cur_elts].fragmentation += size;
                                new = rspamd_mempool_chain_new (pool->elt_len,
                                                pool_type);
@@ -429,7 +429,7 @@ memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size,
                }
 
                /* No need to allocate page */
-               tmp = align_ptr (cur->pos, MEM_ALIGNMENT);
+               tmp = align_ptr (cur->pos, MIN_MEM_ALIGNMENT);
                cur->pos = tmp + size;
                POOL_MTX_UNLOCK ();
 
index 46d044dc785589d4efb219b5c40818159ab2889b..0a2e86b6d76d59f78a613ebd34d1dcde2ca5c689 100644 (file)
@@ -46,7 +46,7 @@ struct f_str_s;
 
 #define MEMPOOL_TAG_LEN 20
 #define MEMPOOL_UID_LEN 20
-#define MEM_ALIGNMENT   sizeof (guint64)
+#define MIN_MEM_ALIGNMENT   sizeof (guint64)
 #define align_ptr(p, a)                                                   \
     (guint8 *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1))
 
@@ -158,7 +158,7 @@ rspamd_mempool_t * rspamd_mempool_new_ (gsize size, const gchar *tag, const gcha
  * @return pointer to allocated object
  */
 void * rspamd_mempool_alloc (rspamd_mempool_t * pool, gsize size)
-               RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+               RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Get memory from temporary pool
@@ -175,7 +175,7 @@ void * rspamd_mempool_alloc_tmp (rspamd_mempool_t * pool, gsize size) RSPAMD_ATT
  * @return pointer to allocated object
  */
 void * rspamd_mempool_alloc0 (rspamd_mempool_t * pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Get memory and set it to zero
@@ -197,7 +197,7 @@ void rspamd_mempool_cleanup_tmp (rspamd_mempool_t * pool);
  * @return pointer to newly created string that is copy of src
  */
 gchar * rspamd_mempool_strdup (rspamd_mempool_t * pool, const gchar *src)
-       RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT);
+       RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 /**
  * Make a copy of fixed string in pool as null terminated string
@@ -206,7 +206,7 @@ gchar * rspamd_mempool_strdup (rspamd_mempool_t * pool, const gchar *src)
  * @return pointer to newly created string that is copy of src
  */
 gchar * rspamd_mempool_fstrdup (rspamd_mempool_t * pool,
-       const struct f_str_s *src) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT);
+       const struct f_str_s *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 struct f_str_tok;
 
@@ -217,7 +217,7 @@ struct f_str_tok;
  * @return pointer to newly created string that is copy of src
  */
 gchar * rspamd_mempool_ftokdup (rspamd_mempool_t *pool,
-               const struct f_str_tok *src) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT);
+               const struct f_str_tok *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 /**
  * Allocate piece of shared memory
@@ -225,9 +225,9 @@ gchar * rspamd_mempool_ftokdup (rspamd_mempool_t *pool,
  * @param size bytes to allocate
  */
 void * rspamd_mempool_alloc_shared (rspamd_mempool_t * pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 void * rspamd_mempool_alloc0_shared (rspamd_mempool_t *pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 /**
  * Add destructor callback to pool
  * @param pool memory pool object