[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [livepatch-build-tools: independ. modules] livepatch-build: Embed hypervisor build id into every hotpatch
On Tue, Apr 16, 2019 at 12:57:14PM +0000, Pawel Wieczorkiewicz wrote: > This change is part of a independant stacked hotpatch modules > feature. This feature allows to bypass dependencies between modules > upon loading, but still verifies Xen build ID matching. > > With stacked hotpatch modules it is essential that each and every > hotpatch is verified against the hypervisor build id upon upload. > It must not be possible to successfully upload hotpatches built for > incorrect version of the hypervisor. > > To achieve that always embed an additional ELF section: > '.livpatch.xen_depends' containing the hypervisor build id. > > The hypervisor build id must be always provided as a command line > parameter: --xen-depends. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx> > Reviewed-by: Andra-Irina Paraschiv <andraprs@xxxxxxxxxx> > Reviewed-by: Bjoern Doebel <doebel@xxxxxxxxx> > Reviewed-by: Norbert Manthey <nmanthey@xxxxxxxxx> This patch looks OK, but I would want to wait until the Xen hypervisor one gets the test-cases+documentation changes.. > --- > livepatch-build | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/livepatch-build b/livepatch-build > index c057fa1..0938b3a 100755 > --- a/livepatch-build > +++ b/livepatch-build > @@ -30,6 +30,7 @@ DEBUG=n > XEN_DEBUG=n > SKIP= > DEPENDS= > +XEN_DEPENDS= > PRELINK= > XENSYMS=xen-syms > > @@ -157,6 +158,9 @@ function create_patch() > # Create a dependency section > perl -e "print pack 'VVVZ*H*', 4, 20, 3, 'GNU', '${DEPENDS}'" > > depends.bin > > + # Create a Xen dependency section > + perl -e "print pack 'VVVZ*H*', 4, 20, 3, 'GNU', '${XEN_DEPENDS}'" > > xen_depends.bin > + > echo "Creating patch module..." > if [ -z "$PRELINK" ]; then > ld -r -o "${PATCHNAME}.livepatch" --build-id=sha1 $(find output > -type f -name "*.o") || die > @@ -168,6 +172,9 @@ function create_patch() > > objcopy --add-section .livepatch.depends=depends.bin > "${PATCHNAME}.livepatch" > objcopy --set-section-flags .livepatch.depends=alloc,readonly > "${PATCHNAME}.livepatch" > + > + objcopy --add-section .livepatch.xen_depends=xen_depends.bin > "${PATCHNAME}.livepatch" > + objcopy --set-section-flags .livepatch.xen_depends=alloc,readonly > "${PATCHNAME}.livepatch" > } > > usage() { > @@ -183,12 +190,13 @@ usage() { > echo " --xen-debug Build debug Xen (if your .config does > not have the options)" >&2 > echo " --xen-syms Build against a xen-syms" >&2 > echo " --depends Required build-id" >&2 > + echo " --xen-depends Required Xen build-id" >&2 > echo " --prelink Prelink" >&2 > } > > find_tools || die "can't find supporting tools" > > -options=$(getopt -o hs:p:c:o:j:k:d -l > "help,srcdir:,patch:,config:,output:,cpus:,skip:,debug,xen-debug,xen-syms:,depends:,prelink" > -- "$@") || die "getopt failed" > +options=$(getopt -o hs:p:c:o:j:k:d -l > "help,srcdir:,patch:,config:,output:,cpus:,skip:,debug,xen-debug,xen-syms:,depends:,xen-depends:,prelink" > -- "$@") || die "getopt failed" > > eval set -- "$options" > > @@ -247,6 +255,11 @@ while [[ $# -gt 0 ]]; do > DEPENDS="$1" > shift > ;; > + --xen-depends) > + shift > + XEN_DEPENDS="$1" > + shift > + ;; > --prelink) > PRELINK=--resolve > shift > @@ -263,6 +276,7 @@ done > [ -z "$configarg" ] && die ".config not given" > [ -z "$outputarg" ] && die "Output directory not given" > [ -z "$DEPENDS" ] && die "Build-id dependency not given" > +[ -z "$XEN_DEPENDS" ] && die "Xen Build-id dependency not given" > > SRCDIR="$(readlink -m -- "$srcarg")" > PATCHFILE="$(readlink -m -- "$patcharg")" > -- > 2.16.5 > > > > > Amazon Development Center Germany GmbH > Krausenstr. 38 > 10117 Berlin > Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich > Ust-ID: DE 289 237 879 > Eingetragen am Amtsgericht Charlottenburg HRB 149173 B > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |