diff --git a/meta/recipes-core/systemd/systemd/journald-fix-fd-leak-in-journal_file_empty.patch b/meta/recipes-core/systemd/systemd/journald-fix-fd-leak-in-journal_file_empty.patch new file mode 100644 index 0000000000..a83c858b2a --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journald-fix-fd-leak-in-journal_file_empty.patch @@ -0,0 +1,27 @@ +journald: fix fd leak in journal_file_empty +Before my previous patch, journal_file_empty wasn't be called with the +correct filename. Now that it's being called with the correct filename +it leaks file descriptors. This patch closes the file descriptors before +returning. + +Signed-off-by: George McCollister + + +Index: systemd-206/src/journal/journal-vacuum.c +=================================================================== +--- systemd-206.orig/src/journal/journal-vacuum.c 2013-07-21 19:43:28.146183128 -0300 ++++ systemd-206/src/journal/journal-vacuum.c 2014-01-29 20:43:27.492343295 -0200 +@@ -129,9 +129,9 @@ + } + + static int journal_file_empty(int dir_fd, const char *name) { +- int fd, r; ++ int r; + le64_t n_entries; +- ++ _cleanup_close_ int fd; + fd = openat(dir_fd, name, O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); + if (fd < 0) + return -errno; + +Upstream-Status: Backport [207] diff --git a/meta/recipes-core/systemd/systemd/journald-fix-vacuuming-of-archived-journals.patch b/meta/recipes-core/systemd/systemd/journald-fix-vacuuming-of-archived-journals.patch new file mode 100644 index 0000000000..7c59200999 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journald-fix-vacuuming-of-archived-journals.patch @@ -0,0 +1,37 @@ +journald: fix vacuuming of archived journals +d_name is modified on line 227 so if the entire journal name is needed +again p must be used. Before this change when journal_file_empty was called +on archived journals it would always return with -2. + +Signed-off-by: George McCollister + +Index: systemd-206/src/journal/journal-vacuum.c +=================================================================== +--- systemd-206.orig/src/journal/journal-vacuum.c 2014-01-29 20:43:27.492343295 -0200 ++++ systemd-206/src/journal/journal-vacuum.c 2014-01-29 20:48:55.076356876 -0200 +@@ -265,18 +265,18 @@ + /* We do not vacuum active files or unknown files! */ + continue; + +- if (journal_file_empty(dirfd(d), de->d_name)) { ++ if (journal_file_empty(dirfd(d), p)) { + + /* Always vacuum empty non-online files. */ + +- if (unlinkat(dirfd(d), de->d_name, 0) >= 0) +- log_debug("Deleted empty journal %s/%s.", directory, de->d_name); ++ if (unlinkat(dirfd(d), p, 0) >= 0) ++ log_debug("Deleted empty journal %s/%s.", directory, p); + else if (errno != ENOENT) +- log_warning("Failed to delete %s/%s: %m", directory, de->d_name); ++ log_warning("Failed to delete %s/%s: %m", directory, p); + continue; + } + +- patch_realtime(directory, de->d_name, &st, &realtime); ++ patch_realtime(directory, p, &st, &realtime); + + GREEDY_REALLOC(list, n_allocated, n_list + 1); + + +Upstream-Status: Backport [207] diff --git a/meta/recipes-core/systemd/systemd_206.bb b/meta/recipes-core/systemd/systemd_206.bb index a1a8bd7ceb..e7d0f1f05e 100644 --- a/meta/recipes-core/systemd/systemd_206.bb +++ b/meta/recipes-core/systemd/systemd_206.bb @@ -21,6 +21,8 @@ SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \ file://0001-use-CAP_MKNOD-ConditionCapability.patch \ file://0001-Use-bin-mkdir-instead-of-host-mkdir-path.patch \ file://binfmt-install.patch \ + file://journald-fix-fd-leak-in-journal_file_empty.patch \ + file://journald-fix-vacuuming-of-archived-journals.patch \ file://touchscreen.rules \ ${UCLIBCPATCHES} \ file://00-create-volatile.conf \