vop_stdadvise(): restore correct handling of length == 0
Switch to unsigned arithmetic to handle overflow not relying on -fwrap,
and specially treat the case of length == 0 from posix_fadvise() which
passes OFF_MAX as the end to VOP. There, roundup() overflows and -fwrap
causes bend and endn become negative. Using uintmax_t gives the place
for roundup() to not wrap.
Also remove locals with single use, and move calculations out from under
bo lock.
Reported by: tmunro
Reviewed by: markj, tmunro
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D46518