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

Reply via email to