In __ubsan_handle_pointer_overflow(), fix the condition for determining
whether a pointer operation overflowed or underflowed. Currently, the
function reports "underflowed" when it should be reporting "overflowed"
and vice versa.
Example of incorrect error reporting:
void *foo = (void *)__UINTPTR_MAX__;
foo += 1;
UBSAN:
pointer operation underflowed
ffffffff to
00000000
Fixes: 4e3fb2fb47d6 ("ubsan: add clang 5.0 support")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
ubsan_prologue(&data->location, &flags);
pr_err("pointer operation %s %p to %p\n",
- base > result ? "underflowed" : "overflowed",
+ base > result ? "overflowed" : "underflowed",
_p(base), _p(result));
ubsan_epilogue(&flags);