From: Alan Cox Date: Tue, 18 Dec 2012 00:02:09 +0000 (-0800) Subject: binfmt_elf: fix corner case kfree of uninitialized data X-Git-Tag: upstream/snapshot3+hdmi~6031^2~93 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6899e92d65c490c5292752718ff277b123f8c00a;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git binfmt_elf: fix corner case kfree of uninitialized data If elf_core_dump() is called and fill_note_info() fails in the kmalloc() then it returns 0 but has not yet initialised all the needed fields. As a result we do a kfree(randomness) after correctly skipping the thread data. [akpm@linux-foundation.org: checkpatch fixes] Signed-off-by: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 6d7d164..0c42cdb 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1601,8 +1601,10 @@ static int fill_note_info(struct elfhdr *elf, int phdrs, info->thread = NULL; psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL); - if (psinfo == NULL) + if (psinfo == NULL) { + info->psinfo.data = NULL; /* So we don't free this wrongly */ return 0; + } fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);