Module Name:    src
Committed By:   yamaguchi
Date:           Fri Mar 24 13:32:19 UTC 2023

Modified Files:
        src/sys/dev/pci: vioscsi.c virtio.c

Log Message:
Added check of pointer for allocated memory before release of resource


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/pci/vioscsi.c
cvs rdiff -u -r1.67 -r1.68 src/sys/dev/pci/virtio.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/pci/vioscsi.c
diff -u src/sys/dev/pci/vioscsi.c:1.32 src/sys/dev/pci/vioscsi.c:1.33
--- src/sys/dev/pci/vioscsi.c:1.32	Thu Mar 23 03:55:11 2023
+++ src/sys/dev/pci/vioscsi.c	Fri Mar 24 13:32:19 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: vioscsi.c,v 1.32 2023/03/23 03:55:11 yamaguchi Exp $	*/
+/*	$NetBSD: vioscsi.c,v 1.33 2023/03/24 13:32:19 yamaguchi Exp $	*/
 /*	$OpenBSD: vioscsi.c,v 1.3 2015/03/14 03:38:49 jsg Exp $	*/
 
 /*
@@ -18,7 +18,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vioscsi.c,v 1.32 2023/03/23 03:55:11 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vioscsi.c,v 1.33 2023/03/24 13:32:19 yamaguchi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -206,8 +206,7 @@ err:
 		vioscsi_free_reqs(sc, vsc);
 
 	for (i=0; i < __arraycount(sc->sc_vqs); i++) {
-		if (sc->sc_vqs[i].vq_num > 0)
-			virtio_free_vq(vsc, &sc->sc_vqs[i]);
+		virtio_free_vq(vsc, &sc->sc_vqs[i]);
 	}
 
 	virtio_child_attach_failed(vsc);

Index: src/sys/dev/pci/virtio.c
diff -u src/sys/dev/pci/virtio.c:1.67 src/sys/dev/pci/virtio.c:1.68
--- src/sys/dev/pci/virtio.c:1.67	Thu Mar 23 03:55:11 2023
+++ src/sys/dev/pci/virtio.c	Fri Mar 24 13:32:19 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: virtio.c,v 1.67 2023/03/23 03:55:11 yamaguchi Exp $	*/
+/*	$NetBSD: virtio.c,v 1.68 2023/03/24 13:32:19 yamaguchi Exp $	*/
 
 /*
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: virtio.c,v 1.67 2023/03/23 03:55:11 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: virtio.c,v 1.68 2023/03/24 13:32:19 yamaguchi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -898,6 +898,9 @@ virtio_free_vq(struct virtio_softc *sc, 
 	struct vq_entry *qe;
 	int i = 0;
 
+	if (vq->vq_vaddr == NULL)
+		return 0;
+
 	/* device must be already deactivated */
 	/* confirm the vq is empty */
 	SIMPLEQ_FOREACH(qe, &vq->vq_freelist, qe_list) {

Reply via email to