]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: prepare for SIMD optimizations
authorVictor Julien <vjulien@oisf.net>
Mon, 26 Feb 2024 09:52:09 +0000 (10:52 +0100)
committerVictor Julien <victor@inliniac.net>
Fri, 24 May 2024 17:11:03 +0000 (19:11 +0200)
Make rule group head bitarray 16 bytes aligned and padded to 16 bytes
boundaries to assist SIMD operations in follow up commits.

(cherry picked from commit 4ba1f44e0d882ffb6d7d93b2864c9dd405f78ea5)

src/detect-engine-siggroup.c

index c05b6c3daac9c247b22ea75bc4e65548b684d9e6..dde000b49a060f4e2600d8afaafcc52314610821 100644 (file)
@@ -64,7 +64,7 @@ void SigGroupHeadInitDataFree(SigGroupHeadInitData *sghid)
         sghid->match_array = NULL;
     }
     if (sghid->sig_array != NULL) {
-        SCFree(sghid->sig_array);
+        SCFreeAligned(sghid->sig_array);
         sghid->sig_array = NULL;
     }
     if (sghid->app_mpms != NULL) {
@@ -94,9 +94,12 @@ static SigGroupHeadInitData *SigGroupHeadInitDataAlloc(uint32_t size)
     memset(sghid, 0x00, sizeof(SigGroupHeadInitData));
 
     /* initialize the signature bitarray */
-    sghid->sig_size = size;
-    if ( (sghid->sig_array = SCMalloc(sghid->sig_size)) == NULL)
+    size = sghid->sig_size = size + 16 - (size % 16);
+    void *ptr = SCMallocAligned(sghid->sig_size, 16);
+    if (ptr == NULL)
         goto error;
+    memset(ptr, 0, size);
+    sghid->sig_array = ptr;
 
     memset(sghid->sig_array, 0, sghid->sig_size);