[patch] [PATCH] Don't write undefined values to disk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Because of structure member alignment, the simple structure

    struct kdump_sub_header {
            unsigned long   phys_base;
            int             dump_level;     
    };  

is 16 bytes large on x86_64. So if you fill the two members phys_base and
dump_level with values, you still have uninitialised memory if you write
sizeof(struct kdump_sub_header) to disk.

This patch initialises everything with zero first to get rid of that problem.
The patch fixes valgrind warning

    ==24152== Syscall param write(buf) points to uninitialised byte(s)
    ==24152==    at 0x4EEFFC0: write (in /lib64/libc-2.8.so)
    ==24152==    by 0x40A97D: (within /bin/makedumpfile)
    ==24152==    by 0x40ACEF: (within /bin/makedumpfile)
    ==24152==    by 0x41896C: (within /bin/makedumpfile)
    ==24152==    by 0x4191AA: (within /bin/makedumpfile)
    ==24152==    by 0x4E48435: (below main) (in /lib64/libc-2.8.so)
    ==24152==  Address 0x7fefffbfc is on thread 1's stack


Signed-off-by: Bernhard Walle <bwalle at suse.de>

---
 makedumpfile.c |    1 +
 1 file changed, 1 insertion(+)

--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -4707,6 +4707,7 @@ write_kdump_header(void)
 	/*
 	 * Write sub header
 	 */
+	memset(&sub_dump_header, 0, sizeof(struct kdump_sub_header));
 	sub_dump_header.phys_base  = info->phys_base;
 	sub_dump_header.dump_level = info->dump_level;
 	size = sizeof(struct kdump_sub_header);



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux