[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 11/28] xsplice: Implement support for applying/reverting/replacing patches.
> That's for an individual patch I suppose? What if REPLACE has to > revert dozens or hundreds of patches? I don't know. That is sometihng I need to figure out. I also need to test this out on the 8 socket machine.. > > +void arch_xsplice_apply_jmp(struct xsplice_patch_func *func) > > +{ > > + uint32_t val; > > The way it's being used below, it clearly should be int32_t. > > > + uint8_t *old_ptr; > > + > > + BUILD_BUG_ON(PATCH_INSN_SIZE > sizeof(func->undo)); > > + BUILD_BUG_ON(PATCH_INSN_SIZE != (1 + sizeof val)); > > + > > + old_ptr = (uint8_t *)func->old_addr; > > (Considering this cast, the "old_addr" member should be > unsigned long (or void *), not uint64_t: The latest on ARM32 > such would otherwise cause problems.) I has to be uint8_t to make the single byte modifications. Keep also in mind that this file is only for x86. > > Also - where is the verification that > func->old_size >= PATCH_INSN_SIZE? I made a 'arch_xsplice_verify_func' to have per-architecture check for that. .. > > + sec = xsplice_elf_sec_by_name(elf, names[i]); > > + if ( !sec ) > > + { > > + printk(XENLOG_ERR "%s%s: %s is missing!\n", > > + XSPLICE, elf->name, names[i]); > > + return -EINVAL; > > + } > > + > > + if ( !sec->sec->sh_size ) > > + return -EINVAL; > > + } > > + > > + return 0; > > +} > > So you check for there being one such section. Is having multiple > of them okay / meaningful? I've been going back on this. I think at this point I will say no. I am going to look at what is involved in this in later versions. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |