[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 16/28] xsplice: Add support for bug frames.
>>> On 24.03.16 at 21:00, <konrad.wilk@xxxxxxxxxx> wrote: > --- a/xen/common/xsplice.c > +++ b/xen/common/xsplice.c > @@ -120,6 +120,24 @@ static int verify_payload(const > xen_sysctl_xsplice_upload_t *upload) > return 0; > } > > +bool_t is_patch(const void *ptr) > +{ > + struct payload *data; > + > + /* > + * No locking since this list is only ever changed during apply or revert > + * context. > + */ > + list_for_each_entry ( data, &applied_list, applied_list ) > + { > + if ( ptr >= data->ro_addr && > + ptr < (data->ro_addr + data->ro_size) ) > + return 1; > + } > + > + return 0; > +} A function with this name can't look at just .rodata. Nor may you assume in the first place that the file names you look for are guaranteed to be in .rodata. > @@ -533,6 +551,28 @@ static int prepare_payload(struct payload *payload, > region->start = (unsigned long)payload->text_addr; > region->end = (unsigned long)(payload->text_addr + payload->text_size); > > + /* Optional sections. */ > + for ( i = 0; i < BUGFRAME_NR; i++ ) > + { > + char str[14]; > + > + snprintf(str, sizeof str, ".bug_frames.%u", i); > + sec = xsplice_elf_sec_by_name(elf, str); > + if ( !sec ) > + continue; > + > + if ( !sec->sec->sh_size || I don't think there's anything wrong with this section being empty. > + (sec->sec->sh_size % sizeof (struct bug_frame)) ) Please use sizeof(*region->frame->bugs) here to avoid a possible disconnect between the expression here and the actual type needed. > + { > + dprintk(XENLOG_DEBUG, "%s%s: Wrong size of .bug_frames.%u!\n", > + XSPLICE, elf->name, i); > + return -EINVAL; > + } > + > + region->frame[i].bugs = (struct bug_frame *)sec->load_addr; The more of these casts I see the more convinced I am that - if they're needed - the type of load_addr was badly chosen. > + region->frame[i].n_bugs = sec->sec->sh_size / sizeof(struct > bug_frame); Same remark for the sizeof() as above. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |