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