]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
recordmcount: Fix endianness handling bug for nop_mcount
authorlibin <huawei.libin@huawei.com>
Tue, 3 Nov 2015 00:58:47 +0000 (08:58 +0800)
committerZefan Li <lizefan@huawei.com>
Wed, 26 Oct 2016 15:15:23 +0000 (23:15 +0800)
commit c84da8b9ad3761eef43811181c7e896e9834b26b upstream.

In nop_mcount, shdr->sh_offset and welp->r_offset should handle
endianness properly, otherwise it will trigger Segmentation fault
if the recordmcount main and file.o have different endianness.

Link: http://lkml.kernel.org/r/563806C7.7070606@huawei.com
Signed-off-by: Li Bin <huawei.libin@huawei.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Zefan Li <lizefan@huawei.com>
scripts/recordmcount.h

index 5e29610303b07dca22d701f022fcec77d78790a0..799d73483fb290affe0639e9ee44a4a7fd5e6cde 100644 (file)
@@ -375,7 +375,7 @@ static void nop_mcount(Elf_Shdr const *const relhdr,
 
                if (mcountsym == Elf_r_sym(relp) && !is_fake_mcount(relp)) {
                        if (make_nop)
-                               ret = make_nop((void *)ehdr, shdr->sh_offset + relp->r_offset);
+                               ret = make_nop((void *)ehdr, _w(shdr->sh_offset) + _w(relp->r_offset));
                        if (warn_on_notrace_sect && !once) {
                                printf("Section %s has mcount callers being ignored\n",
                                       txtname);