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) {