Hi Atsushi,

On Thursday 02 March 2017 10:19 AM, Atsushi Kumagai wrote:
Hello Pratyush,

PT_LOAD of kcore does not have valid p_paddr values for kernel version
less that v4.11. Therefore, older kernel will no long work for mem-usage
with current makedumpfile code. They can only work when they are patched
with fix to "update physical address for kcore ram and text".

This patch fixes the makedumpfile so that it does not allow to work
older kernel for --mem-usage until someone is sure that kernel is
rightly patched and so uses -f in command line.

Signed-off-by: Pratyush Anand <[email protected]>
---
makedumpfile.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/makedumpfile.c b/makedumpfile.c
index 3b8e9810468d..bf006ea5dd5f 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -11269,6 +11269,12 @@ main(int argc, char *argv[])
                        MSG("Try `makedumpfile --help' for more 
information.\n");
                        goto out;
                }
+               if (info->kernel_version < KERNEL_VERSION(4, 11, 0) &&
+                               !info->flag_force) {
+                       MSG("mem-usage not supported for this kernel.\n");
+                       MSG("You can try with -f if your kernel's kcore has valid 
p_paddr\n");
+                       return COMPLETED;
+               }

Should use "goto out" to prevent memory leaks since some heap blocks are
allocated at the head of main().

OK


BTW, the descriptions of -f option in man and print_usage() don't mention this 
usage:

       -f     Force existing DUMPFILE to be overwritten.
              Example:
              # makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
              This command overwrites DUMPFILE even if it already exists.

so they should be updated.

Does following looks fine to you?

$ makedumpfile --help | grep -A3 "\-f"
  [-f]:
      Overwrite DUMPFILE even if it already exists
      Force mem-usage to work with older kernel as well.


$ man makedumpfile | grep -w "\-f  " -A6
-f Force existing DUMPFILE to be overwritten and mem-usage to work with older kernel as well.
              Example:
              # makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
              This command overwrites DUMPFILE even if it already exists.
              # makedumpfile -f --mem-usage /proc/kcore
Kernel version lesser than v4.11 will not work with --mem-usage functionality until it has been patched with upstream commit 464920104bf7. Therefore if you have patched your older kernel then use -f.

Thanks for the review.

~Pratyush

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to