Print this page
MFV: illumos-gate@9f16e2df28efab26216cf68e3841c0a460c5bb73
9790 buffer freed to wrong cache in virtio_register_intx
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Yuri Pankov <yuripv@yuripv.net>
Reviewed by: Andy Fiddaman <omnios@citrus-it.net>
Approved by: Garrett D'Amore <garrett@damore.org>
Author: Hans Rosenfeld <hans.rosenfeld@joyent.com>
re #13879 make libsqlite a real shared lib (tweaks)
Fix rebuild after pull (remove files left in the way)
Make sqlite.h SQLITE_VERSION more predictable.
OS-5 Integrate virtio drivers
integration cleanup (copyrights, cddl 1.0)
port of illumos-3644
3644 Add virtio-net support into the Illumos
Reviewed by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: David Hoppner <0xffea@gmail.com>
port of illumos-1562
1562 Integrate the virtio core module
Reviewed by: Dmitry Yusupov <Dmitry.Yusupov@nexenta.com>
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Approved by: Garrett D'Amore <garrett@damore.org>
@@ -1,30 +1,21 @@
/*
- * CDDL HEADER START
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
*
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
*/
/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2012 Alexey Zaytsev <alexey.zaytsev@gmail.com>
* Copyright (c) 2016 by Delphix. All rights reserved.
+ * Copyright 2017 Joyent, Inc.
*/
/* Based on the NetBSD virtio driver by Minoura Makoto. */
/*
* Copyright (c) 2010 Minoura Makoto.
@@ -982,27 +973,25 @@
virtio_register_intx(struct virtio_softc *sc,
struct virtio_int_handler *config_handler,
struct virtio_int_handler vq_handlers[])
{
int vq_handler_count;
- int config_handler_count = 0;
int actual;
struct virtio_handler_container *vhc;
+ size_t vhc_sz;
int ret = DDI_FAILURE;
/* Walk the handler table to get the number of handlers. */
for (vq_handler_count = 0;
vq_handlers && vq_handlers[vq_handler_count].vh_func;
vq_handler_count++)
;
- if (config_handler != NULL)
- config_handler_count = 1;
+ vhc_sz = sizeof (struct virtio_handler_container) +
+ sizeof (struct virtio_int_handler) * vq_handler_count;
+ vhc = kmem_zalloc(vhc_sz, KM_SLEEP);
- vhc = kmem_zalloc(sizeof (struct virtio_handler_container) +
- sizeof (struct virtio_int_handler) * vq_handler_count, KM_SLEEP);
-
vhc->nhandlers = vq_handler_count;
(void) memcpy(vhc->vq_handlers, vq_handlers,
sizeof (struct virtio_int_handler) * vq_handler_count);
if (config_handler != NULL) {
@@ -1044,12 +1033,11 @@
out_add_handlers:
out_prio:
(void) ddi_intr_free(sc->sc_intr_htable[0]);
out_int_alloc:
kmem_free(sc->sc_intr_htable, sizeof (ddi_intr_handle_t));
- kmem_free(vhc, sizeof (struct virtio_int_handler) *
- (vq_handler_count + config_handler_count));
+ kmem_free(vhc, vhc_sz);
return (ret);
}
/*
* We find out if we support MSI during this, and the register layout