On Wed, Oct 18, 2017 at 03:23:20AM -0600, Jan Beulich wrote: > >>> On 18.10.17 at 09:45, <roger....@citrix.com> wrote: > > +void __ubsan_handle_pointer_overflow(struct pointer_overflow_data *data, > > + unsigned long base, unsigned long result) > > +{ > > + unsigned long flags; > > + > > + if (suppress_report(&data->location)) > > + return; > > + > > + ubsan_prologue(&data->location, &flags); > > + > > + if (((long)base >= 0) == ((long)result >= 0)) > > + pr_err("pointer operation %s %p to %p\n", > > + base > result ? "underflowed" : "overflowed", > > + (void *)base, (void *)result); > > + else > > + pr_err("pointer index expression with base %p overflowed to > > %p\n", > > + (void *)base, (void *)result); > > Would you mind explaining the difference between if and else > branches? (I do realize I should have asked this on v1 already, > but I didn't pay enough attention.) Whatever the idea behind > this, it should probably be explained in a comment, as it looks > to be heuristic.
The upstream commit is: https://github.com/llvm-mirror/compiler-rt/commit/079b7657767dcc0fb284225c277d2b9ce73e423b However it's lacking a proper commit message. It seems to me like it's there to detect addition of signed + unsigned values when an overflow happens, but I don't really see it's value rather than just using the first message. Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel