From: Lennart Poettering Date: Fri, 17 May 2013 00:32:32 +0000 (+0200) Subject: bus: actually unmap kdbus pool after use X-Git-Tag: v205~222 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=63edf05ed9c1d4cb5cf9364e734b2a96f84622d0 bus: actually unmap kdbus pool after use --- diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 8ef5752b3..ede78d7be 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -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; diff --git a/src/libsystemd-bus/bus-kernel.h b/src/libsystemd-bus/bus-kernel.h index 1651c1e41..8cf153ab4 100644 --- a/src/libsystemd-bus/bus-kernel.h +++ b/src/libsystemd-bus/bus-kernel.h @@ -33,6 +33,10 @@ * 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; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 08ab202ba..b0730d495 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -26,6 +26,7 @@ #include #include #include +#include #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);