Fix a memory leak in an error path.
authorjsg <jsg@openbsd.org>
Mon, 27 Jun 2016 13:06:41 +0000 (13:06 +0000)
committerjsg <jsg@openbsd.org>
Mon, 27 Jun 2016 13:06:41 +0000 (13:06 +0000)
ok mikeb@

sys/dev/pv/hyperv.c

index 16d2d18..d99d9f8 100644 (file)
@@ -1487,8 +1487,10 @@ hv_handle_alloc(struct hv_channel *ch, void *buffer, uint32_t buflen,
 
        /* Prepare array of frame addresses */
        if ((frames = mallocarray(total, sizeof(*frames), M_DEVBUF, M_ZERO |
-           waitok)) == NULL)
+           waitok)) == NULL) {
+               free(msg, M_DEVBUF, sizeof(*msg));
                return (ENOMEM);
+       }
        for (i = 0; i < total; i++) {
                if (!pmap_extract(pmap_kernel(), (vaddr_t)buffer +
                    PAGE_SIZE * i, &pa)) {