On 06/03/2014 05:20 PM, ChenQi wrote:
On 06/03/2014 05:06 PM, Richard Purdie wrote:
On Tue, 2014-06-03 at 15:42 +0800, Chen Qi wrote:
The alloca() function allocates space in the stack frame of the caller,
so using alloca(new_size - old_size) would possibly crash the stack,
causing a segment fault error.

This patch fixes the above problem by avoiding using this function in
journal-file.c.

[YOCTO #6201]

Signed-off-by: Chen Qi <qi.c...@windriver.com>
---
.../0001-journal-file.c-do-not-use-alloca.patch | 54 ++++++++++++++++++++
  meta/recipes-core/systemd/systemd_211.bb           |    1 +
  2 files changed, 55 insertions(+)
create mode 100644 meta/recipes-core/systemd/systemd/0001-journal-file.c-do-not-use-alloca.patch

diff --git a/meta/recipes-core/systemd/systemd/0001-journal-file.c-do-not-use-alloca.patch b/meta/recipes-core/systemd/systemd/0001-journal-file.c-do-not-use-alloca.patch
new file mode 100644
index 0000000..a638d58
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-journal-file.c-do-not-use-alloca.patch
@@ -0,0 +1,54 @@
+Upstream-Status: Inappropriate [oe specific]
>From the description, this sounds like an allocation error which can
happen *anywhere* and is a problem that should be addressed upstream.

This Upstream-Status field is therefore completely bogus. Its not
inappropriate or oe specific. If you still believe it is, I'd like to
hear more explanation.

The abuses of this field are starting to really annoy me since this
keeps happening.

Cheers,

Richard






Hi Richard,

The use of alloca() was introduced by an oe-specific patch from Khem Raj.

The patch is meta/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch.
The upstream status of the above patch is as following.
       Upstream-Status: Denied [no desire for uclibc support]

That's why I use 'Inappropriate [oe specific]' in the Upstream-Status field of my patch.

And I just realized I forgot to also patch the journald-kmsg.c file. I'll send out a V2.


Sorry for the confusion.

I just checked and journald-kmsg.c doesn't have the same problem, as it's only allocating a small size of space.

     char *buf = alloca(sizeof(uint64_t));

So I think that's it.
I will also send out a patch for master branch.

Best Regards,
Chen Qi


Best Regards,
Chen Qi

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to