[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 4/4] xen/common: use SYMBOL when required
>>> On 07.01.19 at 20:16, <sstabellini@xxxxxxxxxx> wrote: > On Mon, 7 Jan 2019, Jan Beulich wrote: >> >>> On 03.01.19 at 20:19, <sstabellini@xxxxxxxxxx> wrote: >> > --- a/xen/common/virtual_region.c >> > +++ b/xen/common/virtual_region.c >> > @@ -119,7 +119,11 @@ void __init setup_virtual_regions(const struct >> > exception_table_entry *start, >> > const struct bug_frame *s; >> > >> > s = bug_frames[i - 1]; >> > - sz = bug_frames[i] - s; >> > + /* >> > + * Cast to unsigned long to calculate the size to avoid >> > + * subtractions between pointers pointing to different objects. >> > + */ >> > + sz = (unsigned long)bug_frames[i] - (unsigned long)s; >> >> Perhaps better to use SYMBOL() in the definition of bug_frames[]? > > That was my initial thought, but then bug_frames cannot be const and > cannot be statically initialized. Oh, indeed. But there's no strong need for the "static", it just helps keeping code size small. Without it, none of ... > So the code would become something like this: > > void __init setup_virtual_regions(const struct exception_table_entry *start, > const struct exception_table_entry *end) > { > size_t sz; > unsigned int i = 0; > static unsigned long bug_frames[6]; > bug_frames[i++] = SYMBOL(__start_bug_frames); > bug_frames[i++] = SYMBOL(__stop_bug_frames_0), > bug_frames[i++] = SYMBOL(__stop_bug_frames_1), > bug_frames[i++] = SYMBOL(__stop_bug_frames_2), > #ifdef CONFIG_X86 > bug_frames[i++] = SYMBOL(__stop_bug_frames_3), > #endif > bug_frames[i++] = 0; ... this really looks to be necessary. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |