Module Name:    src
Committed By:   riastradh
Date:           Wed Jul  6 01:12:46 UTC 2022

Modified Files:
        src/sys/dev/audio: audio.c
        src/sys/dev/nvmm: nvmm.c
        src/sys/external/bsd/drm2/dist/drm: drm_prime.c
        src/sys/external/bsd/drm2/drm: drm_cdevsw.c drm_gem_vm.c drm_vm.c
        src/sys/kern: kern_ksyms.c subr_kcov.c vfs_vnops.c
        src/sys/uvm: uvm_device.c uvm_mmap.c

Log Message:
uvm(9): fo_mmap caller guarantees positive size.

No functional change intended, just sprinkling assertions to make it
clearer.


To generate a diff of this commit:
cvs rdiff -u -r1.133 -r1.134 src/sys/dev/audio/audio.c
cvs rdiff -u -r1.43 -r1.44 src/sys/dev/nvmm/nvmm.c
cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/dist/drm/drm_prime.c
cvs rdiff -u -r1.29 -r1.30 src/sys/external/bsd/drm2/drm/drm_cdevsw.c
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/drm/drm_gem_vm.c
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_vm.c
cvs rdiff -u -r1.105 -r1.106 src/sys/kern/kern_ksyms.c
cvs rdiff -u -r1.16 -r1.17 src/sys/kern/subr_kcov.c
cvs rdiff -u -r1.228 -r1.229 src/sys/kern/vfs_vnops.c
cvs rdiff -u -r1.73 -r1.74 src/sys/uvm/uvm_device.c
cvs rdiff -u -r1.182 -r1.183 src/sys/uvm/uvm_mmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/audio/audio.c
diff -u src/sys/dev/audio/audio.c:1.133 src/sys/dev/audio/audio.c:1.134
--- src/sys/dev/audio/audio.c:1.133	Sat Apr 23 11:44:01 2022
+++ src/sys/dev/audio/audio.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: audio.c,v 1.133 2022/04/23 11:44:01 isaki Exp $	*/
+/*	$NetBSD: audio.c,v 1.134 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -181,7 +181,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.133 2022/04/23 11:44:01 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.134 2022/07/06 01:12:45 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "audio.h"
@@ -2098,6 +2098,8 @@ audiommap(struct file *fp, off_t *offp, 
 	int bound;
 	int error;
 
+	KASSERT(len > 0);
+
 	KASSERT(fp->f_audioctx);
 	file = fp->f_audioctx;
 	dev = file->dev;
@@ -3562,6 +3564,8 @@ audio_mmap(struct audio_softc *sc, off_t
 
 	TRACEF(2, file, "off=%lld, prot=%d", (long long)(*offp), prot);
 
+	KASSERT(len > 0);
+
 	if (*offp < 0)
 		return EINVAL;
 

Index: src/sys/dev/nvmm/nvmm.c
diff -u src/sys/dev/nvmm/nvmm.c:1.43 src/sys/dev/nvmm/nvmm.c:1.44
--- src/sys/dev/nvmm/nvmm.c:1.43	Mon Apr 12 09:22:58 2021
+++ src/sys/dev/nvmm/nvmm.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: nvmm.c,v 1.43 2021/04/12 09:22:58 mrg Exp $	*/
+/*	$NetBSD: nvmm.c,v 1.44 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2018-2020 Maxime Villard, m00nbsd.net
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nvmm.c,v 1.43 2021/04/12 09:22:58 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nvmm.c,v 1.44 2022/07/06 01:12:45 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1099,6 +1099,8 @@ nvmm_mmap(file_t *fp, off_t *offp, size_
 	nvmm_cpuid_t cpuid;
 	int error;
 
+	KASESRT(size > 0);
+
 	if (prot & PROT_EXEC)
 		return EACCES;
 	if (size != PAGE_SIZE)

Index: src/sys/external/bsd/drm2/dist/drm/drm_prime.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.19 src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.20
--- src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.19	Sun Dec 19 11:37:23 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_prime.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_prime.c,v 1.19 2021/12/19 11:37:23 riastradh Exp $	*/
+/*	$NetBSD: drm_prime.c,v 1.20 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*
  * Copyright © 2012 Red Hat
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_prime.c,v 1.19 2021/12/19 11:37:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_prime.c,v 1.20 2022/07/06 01:12:45 riastradh Exp $");
 
 #include <linux/export.h>
 #include <linux/dma-buf.h>
@@ -901,6 +901,7 @@ int drm_gem_prime_mmap(struct drm_gem_ob
 		goto out;
 
 #ifdef __NetBSD__
+	KASSERT(size > 0);
 	ret = obj->dev->driver->mmap_object(obj->dev, *offp, size, prot, uobjp,
 	    offp, fil);
 #else
@@ -946,6 +947,7 @@ int drm_gem_dmabuf_mmap(struct dma_buf *
 		return -ENOSYS;
 
 #ifdef __NetBSD__
+	KASSERT(size > 0);
 	return dev->driver->gem_prime_mmap(obj, offp, size, prot, flagsp,
 	    advicep, uobjp, maxprotp);
 #else

Index: src/sys/external/bsd/drm2/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.29 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.30
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.29	Sun Dec 19 12:23:42 2021
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.29 2021/12/19 12:23:42 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.30 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.29 2021/12/19 12:23:42 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.30 2022/07/06 01:12:45 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -520,6 +520,8 @@ drm_fop_mmap(struct file *fp, off_t *off
 	int error;
 
 	KASSERT(fp == file->filp);
+	KASSERT(len > 0);
+
 	/* XXX errno Linux->NetBSD */
 	error = -(*dev->driver->mmap_object)(dev, *offp, len, prot, uobjp,
 	    offp, file->filp);

Index: src/sys/external/bsd/drm2/drm/drm_gem_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.14 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.15
--- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.14	Sun Dec 19 09:52:00 2021
+++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_gem_vm.c,v 1.14 2021/12/19 09:52:00 riastradh Exp $	*/
+/*	$NetBSD: drm_gem_vm.c,v 1.15 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.14 2021/12/19 09:52:00 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.15 2022/07/06 01:12:45 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/file.h>
@@ -71,6 +71,8 @@ drm_gem_or_legacy_mmap_object(struct drm
 {
 	int ret;
 
+	KASSERT(nbytes > 0);
+
 	ret = drm_gem_mmap_object(dev, byte_offset, nbytes, prot, uobjp,
 	    uoffsetp, file);
 	if (ret)
@@ -88,6 +90,8 @@ drm_gem_mmap_object(struct drm_device *d
 {
 	int ret;
 
+	KASSERT(nbytes > 0);
+
 	mutex_lock(&dev->struct_mutex);
 	ret = drm_gem_mmap_object_locked(dev, byte_offset, nbytes, prot,
 	    uobjp, uoffsetp, file);

Index: src/sys/external/bsd/drm2/drm/drm_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_vm.c:1.12 src/sys/external/bsd/drm2/drm/drm_vm.c:1.13
--- src/sys/external/bsd/drm2/drm/drm_vm.c:1.12	Sun Dec 19 09:52:59 2021
+++ src/sys/external/bsd/drm2/drm/drm_vm.c	Wed Jul  6 01:12:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vm.c,v 1.12 2021/12/19 09:52:59 riastradh Exp $	*/
+/*	$NetBSD: drm_vm.c,v 1.13 2022/07/06 01:12:45 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.12 2021/12/19 09:52:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.13 2022/07/06 01:12:45 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/conf.h>
@@ -60,6 +60,7 @@ drm_legacy_mmap_object(struct drm_device
 	struct uvm_object *uobj;
 
 	KASSERT(offset == (offset & ~(PAGE_SIZE-1)));
+	KASSERT(size > 0);
 
 	/*
 	 * Attach the device.  The size and offset are used only for

Index: src/sys/kern/kern_ksyms.c
diff -u src/sys/kern/kern_ksyms.c:1.105 src/sys/kern/kern_ksyms.c:1.106
--- src/sys/kern/kern_ksyms.c:1.105	Wed Sep 22 05:42:19 2021
+++ src/sys/kern/kern_ksyms.c	Wed Jul  6 01:12:46 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_ksyms.c,v 1.105 2021/09/22 05:42:19 rin Exp $	*/
+/*	$NetBSD: kern_ksyms.c,v 1.106 2022/07/06 01:12:46 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_ksyms.c,v 1.105 2021/09/22 05:42:19 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_ksyms.c,v 1.106 2022/07/06 01:12:46 riastradh Exp $");
 
 #if defined(_KERNEL) && defined(_KERNEL_OPT)
 #include "opt_copy_symtab.h"
@@ -1395,6 +1395,7 @@ ksymsmmap(struct file *fp, off_t *offp, 
 	/* uvm_mmap guarantees page-aligned offset and size.  */
 	KASSERT(*offp == round_page(*offp));
 	KASSERT(nbytes == round_page(nbytes));
+	KASSERT(nbytes > 0);
 
 	/* Refuse negative offsets.  */
 	if (*offp < 0)

Index: src/sys/kern/subr_kcov.c
diff -u src/sys/kern/subr_kcov.c:1.16 src/sys/kern/subr_kcov.c:1.17
--- src/sys/kern/subr_kcov.c:1.16	Fri Jul  3 16:11:11 2020
+++ src/sys/kern/subr_kcov.c	Wed Jul  6 01:12:46 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_kcov.c,v 1.16 2020/07/03 16:11:11 maxv Exp $	*/
+/*	$NetBSD: subr_kcov.c,v 1.17 2022/07/06 01:12:46 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2019-2020 The NetBSD Foundation, Inc.
@@ -524,6 +524,8 @@ kcov_fops_mmap(file_t *fp, off_t *offp, 
 	kcov_t *kd, *kdbuf;
 	int error = 0;
 
+	KASSERT(size > 0);
+
 	if (prot & PROT_EXEC)
 		return EACCES;
 	if (off < 0)

Index: src/sys/kern/vfs_vnops.c
diff -u src/sys/kern/vfs_vnops.c:1.228 src/sys/kern/vfs_vnops.c:1.229
--- src/sys/kern/vfs_vnops.c:1.228	Sun May 22 11:27:36 2022
+++ src/sys/kern/vfs_vnops.c	Wed Jul  6 01:12:46 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnops.c,v 1.228 2022/05/22 11:27:36 andvar Exp $	*/
+/*	$NetBSD: vfs_vnops.c,v 1.229 2022/07/06 01:12:46 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.228 2022/05/22 11:27:36 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.229 2022/07/06 01:12:46 riastradh Exp $");
 
 #include "veriexec.h"
 
@@ -919,6 +919,8 @@ vn_mmap(struct file *fp, off_t *offp, si
 	flags = *flagsp;
 	maxprot = VM_PROT_EXECUTE;
 
+	KASSERT(size > 0);
+
 	vp = fp->f_vnode;
 	if (vp->v_type != VREG && vp->v_type != VCHR &&
 	    vp->v_type != VBLK) {

Index: src/sys/uvm/uvm_device.c
diff -u src/sys/uvm/uvm_device.c:1.73 src/sys/uvm/uvm_device.c:1.74
--- src/sys/uvm/uvm_device.c:1.73	Mon Mar 28 12:39:18 2022
+++ src/sys/uvm/uvm_device.c	Wed Jul  6 01:12:46 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_device.c,v 1.73 2022/03/28 12:39:18 riastradh Exp $	*/
+/*	$NetBSD: uvm_device.c,v 1.74 2022/07/06 01:12:46 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.73 2022/03/28 12:39:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.74 2022/07/06 01:12:46 riastradh Exp $");
 
 #include "opt_uvmhist.h"
 
@@ -117,6 +117,8 @@ udv_attach(dev_t device, vm_prot_t acces
 	UVMHIST_FUNC(__func__);
 	UVMHIST_CALLARGS(maphist, "(device=%#jx)", device,0,0,0);
 
+	KASSERT(size > 0);
+
 	/*
 	 * before we do anything, ensure this device supports mmap
 	 */

Index: src/sys/uvm/uvm_mmap.c
diff -u src/sys/uvm/uvm_mmap.c:1.182 src/sys/uvm/uvm_mmap.c:1.183
--- src/sys/uvm/uvm_mmap.c:1.182	Wed Jul  6 00:40:28 2022
+++ src/sys/uvm/uvm_mmap.c	Wed Jul  6 01:12:46 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_mmap.c,v 1.182 2022/07/06 00:40:28 riastradh Exp $	*/
+/*	$NetBSD: uvm_mmap.c,v 1.183 2022/07/06 01:12:46 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_mmap.c,v 1.182 2022/07/06 00:40:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_mmap.c,v 1.183 2022/07/06 01:12:46 riastradh Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_pax.h"
@@ -1011,6 +1011,8 @@ uvm_mmap_dev(struct proc *p, void **addr
 	struct uvm_object *uobj;
 	int error, flags, prot;
 
+	KASSERT(len > 0);
+
 	flags = MAP_SHARED;
 	prot = VM_PROT_READ | VM_PROT_WRITE;
 	if (*addrp)

Reply via email to