________________________________ xiaoggchen(陈小光)
From: [email protected]<mailto:[email protected]> Date: 2017-09-13 00:01 To: [email protected]<mailto:[email protected]> Subject: kpatch Digest, Vol 31, Issue 2(Internet mail) Send kpatch mailing list submissions to [email protected] To subscribe or unsubscribe via the World Wide Web, visit https://www.redhat.com/mailman/listinfo/kpatch or, via email, send a message with subject or body 'help' to [email protected] You can reach the person managing the list at [email protected] When replying, please edit your Subject line so it is more specific than "Re: Contents of kpatch digest..." Today's Topics: 1. Re: [PATCH] kpatch: fix kpatch-build matching changed object bug (Joe Lawrence) ---------------------------------------------------------------------- Message: 1 Date: Mon, 11 Sep 2017 17:18:58 -0400 From: Joe Lawrence <[email protected]> To: [email protected] Subject: Re: [kpatch] [PATCH] kpatch: fix kpatch-build matching changed object bug Message-ID: <[email protected]> Content-Type: text/plain; charset=gbk On 09/10/2017 10:36 PM, xiaoggchen(???) wrote: >> When there are ".." in source object path then current kpatch-gcc can not handle it correctly: >> kpatch-gcc use the following logic to check the objects who got recompiled and would write the changed >> objects to "chagned_objs". But if the path of the input obj is something like"arch/x86/kvm/../../../virt/kvm/.tmp_kvm_main.o" >> then the following logic can not handle it properly, the kvm_main.o will fall into the "*.*.o" branch. >> And kpatch-build will end up with "ERROR: no changed objects found. Check /root/.kpatch/build.log for more details." >> >> kpatch/kpatch-build/kpatch-gcc: >> ...... >> case "$obj" in >> *.mod.o|\ >> *built-in.o|\ >> vmlinux.o|\ >> .tmp_kallsyms1.o|\ >> .tmp_kallsyms2.o|\ >> init/version.o|\ >> arch/x86/boot/version.o|\ >> arch/x86/boot/compressed/eboot.o|\ >> arch/x86/boot/header.o|\ >> arch/x86/boot/compressed/efi_stub_64.o|\ >> arch/x86/boot/compressed/piggy.o|\ >> kernel/system_certificates.o|\ >> arch/x86/vdso/*|\ >> arch/x86/entry/vdso/*|\ >> drivers/firmware/efi/libstub/*|\ >> arch/powerpc/kernel/prom_init.o|\ >> *.*.o) >> break >> ;; >> *.o) >> mkdir -p "$KPATCH_GCC_TEMPDIR/orig/$(dirname $obj)" >> [[ -e $obj ]] && cp -f "$obj" "$KPATCH_GCC_TEMPDIR/orig/$obj" >> echo "$obj" >> "$KPATCH_GCC_TEMPDIR/changed_objs" >> break >> ;; >> *) >> break >> ;; >> esac >> ...... >> >> Signed-off-by: chen xiaoguang <[email protected]> >> >> --- >> kpatch-build/kpatch-gcc | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc >> index e91f4b2..ffa9bc3 100755 >> --- a/kpatch-build/kpatch-gcc >> +++ b/kpatch-build/kpatch-gcc >> @@ -38,7 +38,8 @@ if [[ "$TOOLCHAINCMD" = "gcc" ]] ; then >> arch/x86/entry/vdso/*|\ >> drivers/firmware/efi/libstub/*|\ >> arch/powerpc/kernel/prom_init.o|\ >> - *.*.o) >> + *[^.].[^.]*.o|\ >> + .*[0-9].o) >> break >> ;; >> *.o) >> -- >> 1.8.3.1 > I think the modification to the glob for issue #686 [1] is inadvertently > added those ".." directories to its ignore list. > [1] https://github.com/dynup/kpatch/issues/686 > I tinkered a little while trying to exclude the ".." patterns, including > enabling extended glob support (shopt -s extglob) and came away for > ever-more complicated patterns. > If I read the history of PR 686 [1] correctly, I think we added the > leading wildcard in front of ".*.o" when we wanted to exclude > .lib_exports.o files. Maybe it would be simpler to revert back to > ".*.o" and add a new "*/.lib_exports.o" pattern. Yes. Your change is more simpler. I tested this modification and it worked. > But to be honest, I don't fully understand what the two new patterns > you've added will be matching... so perhaps an explanation will show > that they are simpler than my suggestion. My intention is to skip those objects where there is "." before a "." or after a "." for pattern "*[^.].[^.]*.o When I did the test I found using my modification some objects like ".357982.o" was added to the changed_objs so I added the pattern ".*[0-9]" to skip those objects. > Thanks, > -- Joe ------------------------------ _______________________________________________ kpatch mailing list [email protected] https://www.redhat.com/mailman/listinfo/kpatch End of kpatch Digest, Vol 31, Issue 2 **********************************
_______________________________________________ kpatch mailing list [email protected] https://www.redhat.com/mailman/listinfo/kpatch
