From f9cc8410e16ab0870c218b7a9541464ef10a8d34 Mon Sep 17 00:00:00 2001 From: Eric van Gyzen Date: Fri, 18 Sep 2020 16:48:08 +0000 Subject: [PATCH] vm_ooffset_t is now unsigned vm_ooffset_t is now unsigned. Remove some tests for negative values, or make other adjustments accordingly. Reported by: Coverity Reviewed by: kib markj Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D26214 --- sys/dev/fb/fbd.c | 2 +- sys/dev/ksyms/ksyms.c | 2 +- sys/dev/vt/hw/fb/vt_fb.c | 2 +- sys/fs/tmpfs/tmpfs_subr.c | 12 +++++++----- sys/kern/uipc_shm.c | 2 +- sys/kern/vfs_vnops.c | 2 +- sys/vm/vnode_pager.c | 3 --- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/sys/dev/fb/fbd.c b/sys/dev/fb/fbd.c index 4d0dcf00191..36439af9256 100644 --- a/sys/dev/fb/fbd.c +++ b/sys/dev/fb/fbd.c @@ -176,7 +176,7 @@ fb_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr, int nprot, if (info->fb_flags & FB_FLAG_NOMMAP) return (ENODEV); - if (offset >= 0 && offset < info->fb_size) { + if (offset < info->fb_size) { if (info->fb_pbase == 0) *paddr = vtophys((uint8_t *)info->fb_vbase + offset); else diff --git a/sys/dev/ksyms/ksyms.c b/sys/dev/ksyms/ksyms.c index 6e7b032ea34..2fb3d9bd2f7 100644 --- a/sys/dev/ksyms/ksyms.c +++ b/sys/dev/ksyms/ksyms.c @@ -484,7 +484,7 @@ ksyms_mmap_single(struct cdev *dev, vm_ooffset_t *offset, vm_size_t size, if (error != 0) return (error); - if (*offset < 0 || *offset >= round_page(sc->sc_objsz) || + if (*offset >= round_page(sc->sc_objsz) || size > round_page(sc->sc_objsz) - *offset || (nprot & ~PROT_READ) != 0) return (EINVAL); diff --git a/sys/dev/vt/hw/fb/vt_fb.c b/sys/dev/vt/hw/fb/vt_fb.c index 58111ada366..01850f789d2 100644 --- a/sys/dev/vt/hw/fb/vt_fb.c +++ b/sys/dev/vt/hw/fb/vt_fb.c @@ -140,7 +140,7 @@ vt_fb_mmap(struct vt_device *vd, vm_ooffset_t offset, vm_paddr_t *paddr, if (info->fb_flags & FB_FLAG_NOMMAP) return (ENODEV); - if (offset >= 0 && offset < info->fb_size) { + if (offset < info->fb_size) { if (info->fb_pbase == 0) { *paddr = vtophys((uint8_t *)info->fb_vbase + offset); } else { diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index 0068656968b..e454f45a089 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -178,12 +178,14 @@ RB_PROTOTYPE_STATIC(tmpfs_dir, tmpfs_dirent, uh.td_entries, tmpfs_dirtree_cmp); size_t tmpfs_mem_avail(void) { - vm_ooffset_t avail; + size_t avail; + long reserved; - avail = swap_pager_avail + vm_free_count() - tmpfs_pages_reserved; - if (__predict_false(avail < 0)) - avail = 0; - return (avail); + avail = swap_pager_avail + vm_free_count(); + reserved = atomic_load_long(&tmpfs_pages_reserved); + if (__predict_false(avail < reserved)) + return (0); + return (avail - reserved); } size_t diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c index 465c885ceba..c0fdccefda4 100644 --- a/sys/kern/uipc_shm.c +++ b/sys/kern/uipc_shm.c @@ -1577,7 +1577,7 @@ shm_mmap(struct file *fp, vm_map_t map, vm_offset_t *addr, vm_size_t objsize, #ifdef _LP64 objsize > OFF_MAX || #endif - foff < 0 || foff > OFF_MAX - objsize) { + foff > OFF_MAX - objsize) { error = EINVAL; goto out; } diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 671ee089d44..cae3c065336 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -2630,7 +2630,7 @@ vn_mmap(struct file *fp, vm_map_t map, vm_offset_t *addr, vm_size_t size, #ifdef _LP64 size > OFF_MAX || #endif - foff < 0 || foff > OFF_MAX - size) + foff > OFF_MAX - size) return (EINVAL); writecounted = FALSE; diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 19ba1f525df..0c67a3785ea 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -541,9 +541,6 @@ vnode_pager_addr(struct vnode *vp, vm_ooffset_t address, daddr_t *rtaddress, daddr_t vblock; daddr_t voffset; - if (address < 0) - return -1; - if (VN_IS_DOOMED(vp)) return -1; -- 2.45.0