]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/mmapped: remove padding from header where used docs-develop-rrl-8r8r8r/deployments/5252
authorLukáš Ondráček <lukas.ondracek@nic.cz>
Tue, 1 Oct 2024 13:13:21 +0000 (15:13 +0200)
committerLukáš Ondráček <lukas.ondracek@nic.cz>
Tue, 1 Oct 2024 13:13:21 +0000 (15:13 +0200)
daemon/defer.c
daemon/ratelimiting.c

index 1ff523e39bdd1faaac40993c749880f316199df9..91fb1295b38e3ed19781c1db5a139ad74bc8decc 100644 (file)
@@ -270,7 +270,11 @@ int defer_init(uv_loop_t *loop)
        for (size_t c = header.capacity - 1; c > 0; c >>= 1) capacity_log++;
 
        size_t size = offsetof(struct defer, kru) + KRU.get_size(capacity_log);
-       size_t header_size = offsetof(struct defer, kru);
+       size_t header_size = offsetof(struct defer, using_avx2) + sizeof(header.using_avx2);
+       kr_assert(header_size ==
+               sizeof(header.capacity) +
+               sizeof(header.max_decay) +
+               sizeof(header.using_avx2));  // no undefined padding inside
 
        int ret = mmapped_init(&defer_mmapped, "defer", size, &header, header_size);
        if (ret == MMAPPED_WAS_FIRST) {
index cd15dc8c55e8ed8edc4e2810d475ebaae1608762..676fde575d240b39f836fe3c3b8e3aa763611a0b 100644 (file)
@@ -42,7 +42,6 @@ int ratelimiting_init(const char *mmap_file, size_t capacity, uint32_t instant_l
        for (size_t c = capacity - 1; c > 0; c >>= 1) capacity_log++;
 
        size_t size = offsetof(struct ratelimiting, kru) + KRU.get_size(capacity_log);
-       size_t header_size = offsetof(struct ratelimiting, v4_prices);
 
        struct ratelimiting header = {
                .capacity = capacity,
@@ -52,6 +51,14 @@ int ratelimiting_init(const char *mmap_file, size_t capacity, uint32_t instant_l
                .using_avx2 = using_avx2()
        };
 
+       size_t header_size = offsetof(struct ratelimiting, using_avx2) + sizeof(header.using_avx2);
+       kr_assert(header_size ==
+               sizeof(header.capacity) +
+               sizeof(header.instant_limit) +
+               sizeof(header.rate_limit) +
+               sizeof(header.tc_limit) +
+               sizeof(header.using_avx2));  // no undefined padding inside
+
        int ret = mmapped_init(&ratelimiting_mmapped, mmap_file, size, &header, header_size);
        if (ret == MMAPPED_WAS_FIRST) {
                kr_log_info(SYSTEM, "Initializing rate-limiting...\n");