diff options
Diffstat (limited to 'meta/recipes-core')
6 files changed, 203 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/journal-Add-missing-byte-order-conversions.patch b/meta/recipes-core/systemd/systemd/journal-Add-missing-byte-order-conversions.patch new file mode 100644 index 0000000000..21ea0f9502 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journal-Add-missing-byte-order-conversions.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From 43539d6b60ef0db3e98d00bef0024614c8c1807a Mon Sep 17 00:00:00 2001 | ||
2 | From: George McCollister <george.mccollister@gmail.com> | ||
3 | Date: Tue, 31 Dec 2013 14:37:32 -0600 | ||
4 | Subject: [PATCH] journal: Add missing byte order conversions | ||
5 | |||
6 | Convert entry_array.items[0] to host byte order prior to passing it to | ||
7 | chain_cache_put(). | ||
8 | |||
9 | [zj: also use le64toh in journal-verify.c] | ||
10 | |||
11 | https://bugs.freedesktop.org/show_bug.cgi?id=73194 | ||
12 | |||
13 | Upstream-Status: Backport [Fedora] | ||
14 | --- | ||
15 | src/journal/journal-file.c | 4 ++-- | ||
16 | src/journal/journal-verify.c | 6 +++--- | ||
17 | 2 files changed, 5 insertions(+), 5 deletions(-) | ||
18 | |||
19 | Index: systemd-208/src/journal/journal-file.c | ||
20 | =================================================================== | ||
21 | --- systemd-208.orig/src/journal/journal-file.c 2014-02-07 22:51:44.000000000 -0800 | ||
22 | +++ systemd-208/src/journal/journal-file.c 2014-02-07 22:58:40.665062951 -0800 | ||
23 | @@ -1447,7 +1447,7 @@ | ||
24 | |||
25 | found: | ||
26 | /* Let's cache this item for the next invocation */ | ||
27 | - chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t); | ||
28 | + chain_cache_put(f->chain_cache, ci, first, a, le64toh(o->entry_array.items[0]), t); | ||
29 | |||
30 | r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o); | ||
31 | if (r < 0) | ||
32 | @@ -1624,7 +1624,7 @@ | ||
33 | return 0; | ||
34 | |||
35 | /* Let's cache this item for the next invocation */ | ||
36 | - chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t); | ||
37 | + chain_cache_put(f->chain_cache, ci, first, a, le64toh(array->entry_array.items[0]), t); | ||
38 | |||
39 | if (subtract_one && i == 0) | ||
40 | p = last_p; | ||
41 | Index: systemd-208/src/journal/journal-verify.c | ||
42 | =================================================================== | ||
43 | --- systemd-208.orig/src/journal/journal-verify.c 2013-08-13 13:02:46.000000000 -0700 | ||
44 | +++ systemd-208/src/journal/journal-verify.c 2014-02-07 22:57:14.849308409 -0800 | ||
45 | @@ -249,12 +249,12 @@ | ||
46 | } | ||
47 | |||
48 | for (i = 0; i < journal_file_entry_array_n_items(o); i++) | ||
49 | - if (o->entry_array.items[i] != 0 && | ||
50 | - !VALID64(o->entry_array.items[i])) { | ||
51 | + if (le64toh(o->entry_array.items[i]) != 0 && | ||
52 | + !VALID64(le64toh(o->entry_array.items[i]))) { | ||
53 | log_error(OFSfmt": invalid object entry array item (%"PRIu64"/%"PRIu64"): "OFSfmt, | ||
54 | offset, | ||
55 | i, journal_file_entry_array_n_items(o), | ||
56 | - o->entry_array.items[i]); | ||
57 | + le64toh(o->entry_array.items[i])); | ||
58 | return -EBADMSG; | ||
59 | } | ||
60 | |||
diff --git a/meta/recipes-core/systemd/systemd/journal-file-protect-against-alloca-0.patch b/meta/recipes-core/systemd/systemd/journal-file-protect-against-alloca-0.patch new file mode 100644 index 0000000000..953373ee49 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journal-file-protect-against-alloca-0.patch | |||
@@ -0,0 +1,23 @@ | |||
1 | From a25fd0d4bd3cf652e55c24e7dc873fe530fa111a Mon Sep 17 00:00:00 2001 | ||
2 | From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com> | ||
3 | Date: Mon, 16 Dec 2013 23:35:30 +0100 | ||
4 | Subject: [PATCH] journal-file: protect against alloca(0) | ||
5 | |||
6 | --- | ||
7 | src/journal/journal-file.c | 3 ++- | ||
8 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
9 | |||
10 | diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c | ||
11 | index 090cf97..8ea258b 100644 | ||
12 | --- a/src/journal/journal-file.c | ||
13 | +++ b/src/journal/journal-file.c | ||
14 | @@ -2737,7 +2737,8 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 | ||
15 | ts.realtime = le64toh(o->entry.realtime); | ||
16 | |||
17 | n = journal_file_entry_n_items(o); | ||
18 | - items = alloca(sizeof(EntryItem) * n); | ||
19 | + /* alloca() can't take 0, hence let's allocate at least one */ | ||
20 | + items = alloca(sizeof(EntryItem) * MAX(1u, n)); | ||
21 | |||
22 | for (i = 0; i < n; i++) { | ||
23 | uint64_t l, h; | ||
diff --git a/meta/recipes-core/systemd/systemd/journal-when-appending-to-journal-file-allocate-larg.patch b/meta/recipes-core/systemd/systemd/journal-when-appending-to-journal-file-allocate-larg.patch new file mode 100644 index 0000000000..89573bbaf9 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journal-when-appending-to-journal-file-allocate-larg.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | From c0658e1948c301177b1527227be0c18932cd7cce Mon Sep 17 00:00:00 2001 | ||
2 | From: Lennart Poettering <lennart@poettering.net> | ||
3 | Date: Tue, 26 Nov 2013 18:39:42 +0100 | ||
4 | Subject: [PATCH] journal: when appending to journal file, allocate larger | ||
5 | blocks at once | ||
6 | |||
7 | (cherry picked from commit a676e66535e12458ea6d366a653f8dd60f982504) | ||
8 | |||
9 | Conflicts: | ||
10 | src/journal/journal-file.c | ||
11 | --- | ||
12 | src/journal/journal-file.c | 26 +++++++++++++++++--------- | ||
13 | 1 file changed, 17 insertions(+), 9 deletions(-) | ||
14 | |||
15 | Upstream-Status: Backport | ||
16 | |||
17 | Index: systemd-208/src/journal/journal-file.c | ||
18 | =================================================================== | ||
19 | --- systemd-208.orig/src/journal/journal-file.c 2014-02-07 22:37:06.013722798 -0800 | ||
20 | +++ systemd-208/src/journal/journal-file.c 2014-02-07 22:44:51.563341090 -0800 | ||
21 | @@ -68,6 +68,9 @@ | ||
22 | /* How many entries to keep in the entry array chain cache at max */ | ||
23 | #define CHAIN_CACHE_MAX 20 | ||
24 | |||
25 | +/* How much to increase the journal file size at once each time we allocate something new. */ | ||
26 | +#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL) /* 8MB */ | ||
27 | + | ||
28 | int journal_file_set_online(JournalFile *f) { | ||
29 | assert(f); | ||
30 | |||
31 | @@ -218,8 +221,7 @@ | ||
32 | journal_file_set_online(f); | ||
33 | |||
34 | /* Sync the online state to disk */ | ||
35 | - msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC); | ||
36 | - fdatasync(f->fd); | ||
37 | + fsync(f->fd); | ||
38 | |||
39 | return 0; | ||
40 | } | ||
41 | @@ -313,7 +315,7 @@ | ||
42 | } | ||
43 | |||
44 | static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { | ||
45 | - uint64_t old_size, new_size; | ||
46 | + uint64_t old_size, new_size, file_size; | ||
47 | int r; | ||
48 | |||
49 | assert(f); | ||
50 | @@ -333,12 +335,10 @@ | ||
51 | if (new_size <= old_size) | ||
52 | return 0; | ||
53 | |||
54 | - if (f->metrics.max_size > 0 && | ||
55 | - new_size > f->metrics.max_size) | ||
56 | + if (f->metrics.max_size > 0 && new_size > f->metrics.max_size) | ||
57 | return -E2BIG; | ||
58 | |||
59 | - if (new_size > f->metrics.min_size && | ||
60 | - f->metrics.keep_free > 0) { | ||
61 | + if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) { | ||
62 | struct statvfs svfs; | ||
63 | |||
64 | if (fstatvfs(f->fd, &svfs) >= 0) { | ||
65 | @@ -363,8 +363,16 @@ | ||
66 | if (r != 0) | ||
67 | return -r; | ||
68 | |||
69 | - if (fstat(f->fd, &f->last_stat) < 0) | ||
70 | - return -errno; | ||
71 | + /* Increase the file size a bit further than this, so that we | ||
72 | + * we can create larger memory maps to cache */ | ||
73 | + file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; | ||
74 | + if (file_size > (uint64_t) f->last_stat.st_size) { | ||
75 | + if (file_size > new_size) | ||
76 | + ftruncate(f->fd, file_size); | ||
77 | + | ||
78 | + if (fstat(f->fd, &f->last_stat) < 0) | ||
79 | + return -errno; | ||
80 | + } | ||
81 | |||
82 | f->header->arena_size = htole64(new_size - le64toh(f->header->header_size)); | ||
83 | |||
diff --git a/meta/recipes-core/systemd/systemd/journald-add-missing-error-check.patch b/meta/recipes-core/systemd/systemd/journald-add-missing-error-check.patch new file mode 100644 index 0000000000..10590e142c --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journald-add-missing-error-check.patch | |||
@@ -0,0 +1,16 @@ | |||
1 | Upstream-Status: Backport [Fedora] | ||
2 | |||
3 | Index: systemd-208/src/journal/journal-file.c | ||
4 | =================================================================== | ||
5 | --- systemd-208.orig/src/journal/journal-file.c 2013-08-13 13:02:46.397707086 -0700 | ||
6 | +++ systemd-208/src/journal/journal-file.c 2014-02-07 22:29:01.398794277 -0800 | ||
7 | @@ -907,7 +907,8 @@ | ||
8 | |||
9 | osize = offsetof(Object, field.payload) + size; | ||
10 | r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p); | ||
11 | - | ||
12 | + if (r < 0) | ||
13 | + return r; | ||
14 | o->field.hash = htole64(hash); | ||
15 | memcpy(o->field.payload, field, size); | ||
16 | |||
diff --git a/meta/recipes-core/systemd/systemd/journald-fix-minor-memory-leak.patch b/meta/recipes-core/systemd/systemd/journald-fix-minor-memory-leak.patch new file mode 100644 index 0000000000..9b90ed2688 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/journald-fix-minor-memory-leak.patch | |||
@@ -0,0 +1,16 @@ | |||
1 | Fix minor memory leak | ||
2 | |||
3 | Upstream-Status: Backport [Fedora] | ||
4 | |||
5 | Index: systemd-208/src/journal/journal-vacuum.c | ||
6 | =================================================================== | ||
7 | --- systemd-208.orig/src/journal/journal-vacuum.c 2013-09-12 05:51:57.258256643 -0700 | ||
8 | +++ systemd-208/src/journal/journal-vacuum.c 2014-02-07 22:35:55.695747001 -0800 | ||
9 | @@ -277,6 +277,7 @@ | ||
10 | freed += size; | ||
11 | } else if (errno != ENOENT) | ||
12 | log_warning("Failed to delete %s/%s: %m", directory, p); | ||
13 | + free(p); | ||
14 | |||
15 | continue; | ||
16 | } | ||
diff --git a/meta/recipes-core/systemd/systemd_208.bb b/meta/recipes-core/systemd/systemd_208.bb index 5ed31c35b0..f94ce56252 100644 --- a/meta/recipes-core/systemd/systemd_208.bb +++ b/meta/recipes-core/systemd/systemd_208.bb | |||
@@ -20,6 +20,11 @@ inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-altern | |||
20 | SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \ | 20 | SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \ |
21 | file://0001-Use-bin-mkdir-instead-of-host-mkdir-path.patch \ | 21 | file://0001-Use-bin-mkdir-instead-of-host-mkdir-path.patch \ |
22 | file://binfmt-install.patch \ | 22 | file://binfmt-install.patch \ |
23 | file://journald-add-missing-error-check.patch \ | ||
24 | file://journald-fix-minor-memory-leak.patch \ | ||
25 | file://journal-when-appending-to-journal-file-allocate-larg.patch \ | ||
26 | file://journal-file-protect-against-alloca-0.patch \ | ||
27 | file://journal-Add-missing-byte-order-conversions.patch \ | ||
23 | file://touchscreen.rules \ | 28 | file://touchscreen.rules \ |
24 | ${UCLIBCPATCHES} \ | 29 | ${UCLIBCPATCHES} \ |
25 | file://00-create-volatile.conf \ | 30 | file://00-create-volatile.conf \ |