chiark / gitweb /
bus: unmap memfd retrieved from the memfd cache
authorKay Sievers <kay@vrfy.org>
Tue, 4 Jun 2013 21:37:57 +0000 (23:37 +0200)
committerKay Sievers <kay@vrfy.org>
Tue, 4 Jun 2013 21:37:57 +0000 (23:37 +0200)
src/libsystemd-bus/bus-kernel.c
src/libsystemd-bus/bus-message.c

index ad0d5731490d2fef760be1f4e89d46dca05af079..ffa843d5d1090b5fdf8e73029d5fc6d0113aa0bf 100644 (file)
@@ -729,7 +729,7 @@ int bus_kernel_pop_memfd(sd_bus *bus, void **address, size_t *size) {
                 return fd;
         }
 
-        c = &bus->memfd_cache[-- bus->n_memfd_cache];
+        c = &bus->memfd_cache[--bus->n_memfd_cache];
 
         assert(c->fd >= 0);
         assert(c->size == 0 || c->address);
index 77a875d4ebbdf3ceea5e142275d400fd69aa4f5b..760a148fadd8f473f110d0a06589d8cdb4255cea 100644 (file)
@@ -1216,8 +1216,9 @@ static int part_make_space(
 
                         part->mapped = psz;
                         part->data = n;
-                        part->munmap_this = true;
                 }
+
+                part->munmap_this = true;
         } else {
                 n = realloc(part->data, sz);
                 if (!n) {
@@ -2358,9 +2359,8 @@ void bus_body_part_unmap(struct bus_body_part *part) {
         if (!part->data)
                 return;
 
-        //FIXME: this is not set in the benchmark
-        //if (!part->munmap_this)
-        //        return;
+        if (!part->munmap_this)
+                return;
 
         assert_se(munmap(part->data, part->mapped) == 0);