chiark / gitweb /
bus: actually unmap kdbus pool after use
authorLennart Poettering <lennart@poettering.net>
Fri, 17 May 2013 00:32:32 +0000 (02:32 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 17 May 2013 02:26:27 +0000 (04:26 +0200)
src/libsystemd-bus/bus-kernel.c
src/libsystemd-bus/bus-kernel.h
src/libsystemd-bus/sd-bus.c

index 8ef5752..ede78d7 100644 (file)
@@ -45,8 +45,6 @@
 #define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data)
 #define KDBUS_ITEM_SIZE(s) ALIGN8((s) + KDBUS_ITEM_HEADER_SIZE)
 
-#define KDBUS_POOL_SIZE (4*1024*1024)
-
 static int parse_unique_name(const char *s, uint64_t *id) {
         int r;
 
index 1651c1e..8cf153a 100644 (file)
  * sending vectors */
 #define MEMFD_MIN_SIZE (32*1024)
 
+/* The size of the per-connection memory pool that we set up and where
+ * the kernel places our incoming messages */
+#define KDBUS_POOL_SIZE (16*1024*1024)
+
 struct memfd_cache {
         int fd;
         void *address;
index 08ab202..b0730d4 100644 (file)
@@ -26,6 +26,7 @@
 #include <netdb.h>
 #include <sys/poll.h>
 #include <byteswap.h>
+#include <sys/mman.h>
 
 #include "util.h"
 #include "macro.h"
@@ -64,6 +65,9 @@ static void bus_free(sd_bus *b) {
 
         bus_close_fds(b);
 
+        if (b->kdbus_buffer)
+                munmap(b->kdbus_buffer, KDBUS_POOL_SIZE);
+
         free(b->rbuffer);
         free(b->unique_name);
         free(b->auth_buffer);