[kpatch] [issue] ERROR: trace.o: kpatch_create_mcount_sections: 2446: function 'print_trace_header' has no fentry call

Seth Jennings sjenning at redhat.com
Tue Sep 23 15:56:13 UTC 2014


On Sat, Sep 20, 2014 at 02:22:09PM +0800, Xie XiuQi wrote:
> On 2014/9/20 11:20, Corey Henderson wrote:
> > On 9/19/2014 9:03 PM, Xie XiuQi wrote:
> >> Hello guys,
> >>
> >> When I create a kpatch from source directory, I got this error:
> >>
> >> $ kpatch-build -s /home/xiexiuqi/linux-3.10.0-123.6.3.el7 cmdline-string.patch -d
> >> ...
> >> sym 894, type 0, bind 1, ndx 00, name __start___trace_bprintk_fmt (SAME)
> >> sym 895, type 0, bind 1, ndx 00, name ring_buffer_discard_commit (SAME)
> >> sym 896, type 0, bind 1, ndx 00, name ring_buffer_read_page (SAME)
> >> lookup for print_trace_header @ 0xffffffff81115a30 len 541
> >> lookup for trace_flags @ 0xffffffff81939ce8 len 8
> >> lookup for get_total_entries.isra.20 @ 0xffffffff81111b20 len 207
> >> lookup for seq_print_ip_sym @ 0xffffffff8111a0f0 len 131
> >> lookup for trace_print_seq @ 0xffffffff81119560 len 74
> >> lookup for seq_print_ip_sym @ 0xffffffff8111a0f0 len 131
> >> lookup for trace_print_seq @ 0xffffffff81119560 len 74
> >> /usr/local/libexec/kpatch/create-diff-object: ERROR: trace.o: kpatch_create_mcount_sections: 2446: function 'print_trace_header' has no fentry call; unable to patch
> >> + rc=1
> >> + [[ 1 = 139 ]]
> >> + [[ 1 -eq 0 ]]
> >> + [[ 1 -eq 3 ]]
> >> ++ expr 2 + 1
> >> + ERROR=3
> >> + [[ 1 -eq 0 ]]
> >> + [[ 3 -ne 0 ]]
> >> + die '3 error(s) encountered'
> >> + [[ -z 3 error(s) encountered ]]
> >> + msg='3 error(s) encountered'
> >> + warn '3 error(s) encountered. Check /tmp/kpatch-build-1411109002.log for more details.'
> >> + echo 'ERROR: 3 error(s) encountered. Check /tmp/kpatch-build-1411109002.log for more details.'
> >> ERROR: 3 error(s) encountered. Check /tmp/kpatch-build-1411109002.log for more details.
> >> + exit 1
> >> ...
> >>
> >>
> >> $ cat cmdline-string.patch
> >> Index: src/fs/proc/cmdline.c
> >> ===================================================================
> >> --- src.orig/fs/proc/cmdline.c
> >> +++ src/fs/proc/cmdline.c
> >> @@ -5,7 +5,7 @@
> >>
> >>   static int cmdline_proc_show(struct seq_file *m, void *v)
> >>   {
> >> -    seq_printf(m, "%s\n", saved_command_line);
> >> +    seq_printf(m, "%s kpatch=1\n", saved_command_line);
> >>       return 0;
> >>   }
> >>
> >> This patch 'cmdline-string.patch' just modified cmdline.c, but I got so many
> >> changed objects:
> >>
> >> kernel/sys.o
> >> kernel/module.o
> >> kernel/trace/trace.o
> >> fs/proc/cmdline.o
> >> drivers/base/firmware_class.o
> >> drivers/gpu/drm/i915/i915_gpu_error.o
> >> drivers/net/team/team.o
> >> drivers/target/target_core_configfs.o
> >> drivers/target/tcm_fc/tfc_conf.o
> >>
> >> I don't know why?
> >>
> >> However I build successful from .src.rpm:
> >> $ kpatch-build -r /home/xiexiuqi/kernel-3.10.0-123.6.3.el7.src.rpm cmdline-string.patch -d
> >>
> > 
> > 
> > Hi,
> > 
> > Try rerunning the command with "-t vmlinux" at the end.
> 
> Thanks for your reply.
> 
> It doesn't work either:
> 
> $ kpatch-build -s /home/xiexiuqi/linux-3.10.0-123.6.3.el7 cmdline-string.patch -d -t vmlinux
> ...
> $ cat /tmp/kpatch-build-CaLNSC/changed_objs
> kernel/sys.o
> kernel/module.o
> kernel/trace/trace.o
> drivers/base/firmware_class.o
> fs/proc/cmdline.o
> 
> Why do we get these changed objs?

I remember this happening before, but I can remember why or what to do
about it.  It was related to using -s.  I think that a dynamically
generated header file is recreated as a result of the patch and causes
those files to be rebuilt.

I'll try to recreate and get back to you.

Seth

> 
> Dose anyone could work with this command?
> 
> > 
> > I'm assuming you're trying this from an EL7 system?
> 
> Yes, RHEL 7.0.
> 
> > 
> > Thanks,
> > 
> 
> 
> 
> _______________________________________________
> kpatch mailing list
> kpatch at redhat.com
> https://www.redhat.com/mailman/listinfo/kpatch




More information about the kpatch mailing list