|
[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.
>>> On 07.04.16 at 05:09, <konrad.wilk@xxxxxxxxxx> wrote:
>> > + 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.
old_addr can't reasonably be uint8_t, so I can only assume you're
mixing up things here. (And yes, I do realize this is x86 code, but
my reference to ARM32 was only mean to say that there you'll
need to do something similar, and casting uint64_t to whatever
kind of pointer type is not going to work without compiler warning.)
>> 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.
And check for there being exactly one for now, I then assume?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |