binfmt_elf: Fix corner case kfree of uninitialized data
Subsystems (2)
PATCH 1/1 binfmt_elf: Fix corner case kfree of uninitialized data
From: Alan Cox <[email protected]>
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.
Signed-off-by Alan Cox <[email protected]>
---
fs/binfmt_elf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/binfmt_elf.c +3 -1
@@ -1600,8 +1600,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);