On Mon, Sep 11, 2017 at 05:18:58PM -0400, Joe Lawrence wrote: > 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.
Yeah, I think Joe's suggestion would be a little more readable. I opened an issue to track this bug while we decide on a patch: https://github.com/dynup/kpatch/issues/735 Xiaoguang, can you send a v2 with Joe's suggestion? -- Josh _______________________________________________ kpatch mailing list [email protected] https://www.redhat.com/mailman/listinfo/kpatch
