Module Name: src Committed By: ozaki-r Date: Wed Jan 7 07:05:48 UTC 2015
Modified Files: src/sys/arch/x86/x86: cpu_ucode.c src/sys/arch/xen/xen: xen_ucode.c src/sys/dev/i2c: xc3028.c xc5k.c src/sys/dev/ic: bwi.c rt2661.c src/sys/dev/pci: if_ipw.c if_iwi.c if_iwivar.h src/sys/dev/usb: if_athn_usb.c if_rum.c if_urtwn.c if_zyd.c src/sys/kern: kern_cpu.c Log Message: Pass a correct firmware size (instead of 0) to firmware_free firmware_free now uses kmem_free(9) instead of free(9), so we need to pass a correct size to it. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/x86/x86/cpu_ucode.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/xen/xen/xen_ucode.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/i2c/xc3028.c cvs rdiff -u -r1.4 -r1.5 src/sys/dev/i2c/xc5k.c cvs rdiff -u -r1.24 -r1.25 src/sys/dev/ic/bwi.c cvs rdiff -u -r1.29 -r1.30 src/sys/dev/ic/rt2661.c cvs rdiff -u -r1.57 -r1.58 src/sys/dev/pci/if_ipw.c cvs rdiff -u -r1.97 -r1.98 src/sys/dev/pci/if_iwi.c cvs rdiff -u -r1.16 -r1.17 src/sys/dev/pci/if_iwivar.h cvs rdiff -u -r1.6 -r1.7 src/sys/dev/usb/if_athn_usb.c cvs rdiff -u -r1.48 -r1.49 src/sys/dev/usb/if_rum.c cvs rdiff -u -r1.34 -r1.35 src/sys/dev/usb/if_urtwn.c cvs rdiff -u -r1.36 -r1.37 src/sys/dev/usb/if_zyd.c cvs rdiff -u -r1.66 -r1.67 src/sys/kern/kern_cpu.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/arch/x86/x86/cpu_ucode.c diff -u src/sys/arch/x86/x86/cpu_ucode.c:1.4 src/sys/arch/x86/x86/cpu_ucode.c:1.5 --- src/sys/arch/x86/x86/cpu_ucode.c:1.4 Sat Jul 6 12:03:11 2013 +++ src/sys/arch/x86/x86/cpu_ucode.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_ucode.c,v 1.4 2013/07/06 12:03:11 gdt Exp $ */ +/* $NetBSD: cpu_ucode.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $ */ /* * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpu_ucode.c,v 1.4 2013/07/06 12:03:11 gdt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu_ucode.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $"); #include "opt_cpu_ucode.h" #include "opt_compat_netbsd.h" @@ -116,7 +116,7 @@ cpu_ucode_apply(const struct cpu_ucode * } if (sc->sc_blob != NULL) - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; return error; @@ -140,7 +140,7 @@ compat6_cpu_ucode_apply(const struct com error = cpu_ucode_amd_apply(sc, CPU_UCODE_ALL_CPUS); if (sc->sc_blob != NULL) - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; return error; Index: src/sys/arch/xen/xen/xen_ucode.c diff -u src/sys/arch/xen/xen/xen_ucode.c:1.4 src/sys/arch/xen/xen/xen_ucode.c:1.5 --- src/sys/arch/xen/xen/xen_ucode.c:1.4 Sat Jul 6 12:06:24 2013 +++ src/sys/arch/xen/xen/xen_ucode.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: xen_ucode.c,v 1.4 2013/07/06 12:06:24 gdt Exp $ */ +/* $NetBSD: xen_ucode.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $ */ /* * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xen_ucode.c,v 1.4 2013/07/06 12:06:24 gdt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xen_ucode.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $"); #include "opt_cpu_ucode.h" #include "opt_compat_netbsd.h" @@ -115,7 +115,7 @@ cpu_ucode_apply(const struct cpu_ucode * error = -HYPERVISOR_platform_op(&op); if (sc->sc_blob) - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; return error; @@ -141,7 +141,7 @@ compat6_cpu_ucode_apply(const struct com error = -HYPERVISOR_platform_op(&op); if (sc->sc_blob != NULL) - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; return error; Index: src/sys/dev/i2c/xc3028.c diff -u src/sys/dev/i2c/xc3028.c:1.5 src/sys/dev/i2c/xc3028.c:1.6 --- src/sys/dev/i2c/xc3028.c:1.5 Sun Oct 2 19:03:56 2011 +++ src/sys/dev/i2c/xc3028.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: xc3028.c,v 1.5 2011/10/02 19:03:56 jmcneill Exp $ */ +/* $NetBSD: xc3028.c,v 1.6 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2011 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xc3028.c,v 1.5 2011/10/02 19:03:56 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xc3028.c,v 1.6 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -219,7 +219,7 @@ xc3028_firmware_open(struct xc3028 *xc) done: if (fw) - firmware_free(fw, 0); + firmware_free(fw, fwlen); mutex_exit(&xc3028_firmware_lock); if (error) Index: src/sys/dev/i2c/xc5k.c diff -u src/sys/dev/i2c/xc5k.c:1.4 src/sys/dev/i2c/xc5k.c:1.5 --- src/sys/dev/i2c/xc5k.c:1.4 Sun Oct 2 19:03:56 2011 +++ src/sys/dev/i2c/xc5k.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: xc5k.c,v 1.4 2011/10/02 19:03:56 jmcneill Exp $ */ +/* $NetBSD: xc5k.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xc5k.c,v 1.4 2011/10/02 19:03:56 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xc5k.c,v 1.5 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -174,7 +174,7 @@ xc5k_firmware_open(struct xc5k *xc) done: if (fw) - firmware_free(fw, 0); + firmware_free(fw, fwlen); mutex_exit(&xc5k_firmware_lock); if (error) Index: src/sys/dev/ic/bwi.c diff -u src/sys/dev/ic/bwi.c:1.24 src/sys/dev/ic/bwi.c:1.25 --- src/sys/dev/ic/bwi.c:1.24 Tue Feb 25 18:30:09 2014 +++ src/sys/dev/ic/bwi.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: bwi.c,v 1.24 2014/02/25 18:30:09 pooka Exp $ */ +/* $NetBSD: bwi.c,v 1.25 2015/01/07 07:05:48 ozaki-r Exp $ */ /* $OpenBSD: bwi.c,v 1.74 2008/02/25 21:13:30 mglocker Exp $ */ /* @@ -48,7 +48,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bwi.c,v 1.24 2014/02/25 18:30:09 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bwi.c,v 1.25 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/callout.h> @@ -1939,7 +1939,7 @@ invalid: error = EINVAL; free_and_fail: - firmware_free(fwi->fwi_data, 0); + firmware_free(fwi->fwi_data, fwi->fwi_size); fwi->fwi_data = NULL; fwi->fwi_size = 0; @@ -1953,7 +1953,7 @@ bwi_mac_fw_image_free(struct bwi_mac *ma if (fwi->fwi_data != NULL) { DPRINTF(mac->mac_sc, BWI_DBG_FIRMWARE, "freeing firmware %s\n", fwi->fwi_name); - firmware_free(fwi->fwi_data, 0); + firmware_free(fwi->fwi_data, fwi->fwi_size); fwi->fwi_data = NULL; fwi->fwi_size = 0; } Index: src/sys/dev/ic/rt2661.c diff -u src/sys/dev/ic/rt2661.c:1.29 src/sys/dev/ic/rt2661.c:1.30 --- src/sys/dev/ic/rt2661.c:1.29 Sat Feb 18 13:38:36 2012 +++ src/sys/dev/ic/rt2661.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rt2661.c,v 1.29 2012/02/18 13:38:36 drochner Exp $ */ +/* $NetBSD: rt2661.c,v 1.30 2015/01/07 07:05:48 ozaki-r Exp $ */ /* $OpenBSD: rt2661.c,v 1.17 2006/05/01 08:41:11 damien Exp $ */ /* $FreeBSD: rt2560.c,v 1.5 2006/06/02 19:59:31 csjp Exp $ */ @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rt2661.c,v 1.29 2012/02/18 13:38:36 drochner Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rt2661.c,v 1.30 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> @@ -2572,7 +2572,7 @@ rt2661_init(struct ifnet *ifp) if (firmware_read(fh, 0, ucode, size) != 0) { aprint_error_dev(sc->sc_dev, "could not read microcode %s\n", name); - firmware_free(ucode, 0); + firmware_free(ucode, size); firmware_close(fh); rt2661_stop(ifp, 1); return EIO; @@ -2580,13 +2580,13 @@ rt2661_init(struct ifnet *ifp) if (rt2661_load_microcode(sc, ucode, size) != 0) { aprint_error_dev(sc->sc_dev, "could not load 8051 microcode\n"); - firmware_free(ucode, 0); + firmware_free(ucode, size); firmware_close(fh); rt2661_stop(ifp, 1); return EIO; } - firmware_free(ucode, 0); + firmware_free(ucode, size); firmware_close(fh); sc->sc_flags |= RT2661_FWLOADED; } Index: src/sys/dev/pci/if_ipw.c diff -u src/sys/dev/pci/if_ipw.c:1.57 src/sys/dev/pci/if_ipw.c:1.58 --- src/sys/dev/pci/if_ipw.c:1.57 Sat Mar 29 19:28:24 2014 +++ src/sys/dev/pci/if_ipw.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ipw.c,v 1.57 2014/03/29 19:28:24 christos Exp $ */ +/* $NetBSD: if_ipw.c,v 1.58 2015/01/07 07:05:48 ozaki-r Exp $ */ /* FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.15 2005/11/13 17:17:40 damien Exp */ /*- @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ipw.c,v 1.57 2014/03/29 19:28:24 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ipw.c,v 1.58 2015/01/07 07:05:48 ozaki-r Exp $"); /*- * Intel(R) PRO/Wireless 2100 MiniPCI driver @@ -1907,8 +1907,8 @@ ipw_cache_firmware(struct ipw_softc *sc) return 0; -fail3: firmware_free(fw->ucode, 0); -fail2: firmware_free(fw->main, 0); +fail3: firmware_free(fw->ucode, fw->ucode_size); +fail2: firmware_free(fw->main, fw->main_size); fail1: firmware_close(fwh); fail0: return error; @@ -1920,8 +1920,8 @@ ipw_free_firmware(struct ipw_softc *sc) if (!(sc->flags & IPW_FLAG_FW_CACHED)) return; - firmware_free(sc->fw.main, 0); - firmware_free(sc->fw.ucode, 0); + firmware_free(sc->fw.main, sc->fw.main_size); + firmware_free(sc->fw.ucode, sc->fw.ucode_size); sc->flags &= ~IPW_FLAG_FW_CACHED; } Index: src/sys/dev/pci/if_iwi.c diff -u src/sys/dev/pci/if_iwi.c:1.97 src/sys/dev/pci/if_iwi.c:1.98 --- src/sys/dev/pci/if_iwi.c:1.97 Sat Mar 29 19:28:24 2014 +++ src/sys/dev/pci/if_iwi.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwi.c,v 1.97 2014/03/29 19:28:24 christos Exp $ */ +/* $NetBSD: if_iwi.c,v 1.98 2015/01/07 07:05:48 ozaki-r Exp $ */ /* $OpenBSD: if_iwi.c,v 1.111 2010/11/15 19:11:57 damien Exp $ */ /*- @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.97 2014/03/29 19:28:24 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.98 2015/01/07 07:05:48 ozaki-r Exp $"); /*- * Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver @@ -2187,6 +2187,7 @@ iwi_cache_firmware(struct iwi_softc *sc) error = EIO; goto fail1; } + sc->sc_blobsize = size; sc->sc_blob = firmware_malloc(size); if (sc->sc_blob == NULL) { @@ -2246,7 +2247,7 @@ iwi_cache_firmware(struct iwi_softc *sc) return 0; -fail2: firmware_free(sc->sc_blob, 0); +fail2: firmware_free(sc->sc_blob, sc->sc_blobsize); fail1: return error; } @@ -2258,7 +2259,7 @@ iwi_free_firmware(struct iwi_softc *sc) if (!(sc->flags & IWI_FLAG_FW_CACHED)) return; - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->flags &= ~IWI_FLAG_FW_CACHED; } Index: src/sys/dev/pci/if_iwivar.h diff -u src/sys/dev/pci/if_iwivar.h:1.16 src/sys/dev/pci/if_iwivar.h:1.17 --- src/sys/dev/pci/if_iwivar.h:1.16 Tue Jan 19 22:07:00 2010 +++ src/sys/dev/pci/if_iwivar.h Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwivar.h,v 1.16 2010/01/19 22:07:00 pooka Exp $ */ +/* $NetBSD: if_iwivar.h,v 1.17 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2004, 2005 @@ -123,6 +123,7 @@ struct iwi_softc { struct iwi_firmware fw; const char *sc_fwname; char *sc_blob; + size_t sc_blobsize; uint32_t flags; #define IWI_FLAG_FW_CACHED (1 << 0) Index: src/sys/dev/usb/if_athn_usb.c diff -u src/sys/dev/usb/if_athn_usb.c:1.6 src/sys/dev/usb/if_athn_usb.c:1.7 --- src/sys/dev/usb/if_athn_usb.c:1.6 Wed Oct 16 18:23:39 2013 +++ src/sys/dev/usb/if_athn_usb.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_athn_usb.c,v 1.6 2013/10/16 18:23:39 christos Exp $ */ +/* $NetBSD: if_athn_usb.c,v 1.7 2015/01/07 07:05:48 ozaki-r Exp $ */ /* $OpenBSD: if_athn_usb.c,v 1.12 2013/01/14 09:50:31 jsing Exp $ */ /*- @@ -22,7 +22,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_athn_usb.c,v 1.6 2013/10/16 18:23:39 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_athn_usb.c,v 1.7 2015/01/07 07:05:48 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -831,7 +831,7 @@ athn_usb_load_firmware(struct athn_usb_s if (error != 0) { aprint_error_dev(usc->usc_dev, "failed to read firmware (error %d)\n", error); - firmware_free(fw, 0); + firmware_free(fw, size); return error; } @@ -848,14 +848,14 @@ athn_usb_load_firmware(struct athn_usb_s USETW(req.wLength, mlen); error = usbd_do_request(usc->usc_udev, &req, ptr); if (error != 0) { - free(fw, M_DEVBUF); + firmware_free(fw, size); return error; } addr += mlen >> 8; ptr += mlen; size -= mlen; } - free(fw, M_DEVBUF); + firmware_free(fw, size); /* Start firmware. */ if (usc->usc_flags & ATHN_USB_FLAG_AR7010) Index: src/sys/dev/usb/if_rum.c diff -u src/sys/dev/usb/if_rum.c:1.48 src/sys/dev/usb/if_rum.c:1.49 --- src/sys/dev/usb/if_rum.c:1.48 Sat Mar 29 00:59:05 2014 +++ src/sys/dev/usb/if_rum.c Wed Jan 7 07:05:48 2015 @@ -1,5 +1,5 @@ /* $OpenBSD: if_rum.c,v 1.40 2006/09/18 16:20:20 damien Exp $ */ -/* $NetBSD: if_rum.c,v 1.48 2014/03/29 00:59:05 zafer Exp $ */ +/* $NetBSD: if_rum.c,v 1.49 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2005-2007 Damien Bergamini <damien.bergam...@free.fr> @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_rum.c,v 1.48 2014/03/29 00:59:05 zafer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_rum.c,v 1.49 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/sockio.h> @@ -283,18 +283,18 @@ rum_attachhook(void *xsc) if (error != 0) { printf("%s: failed to read firmware (error %d)\n", device_xname(sc->sc_dev), error); - firmware_free(ucode, 0); + firmware_free(ucode, size); return error; } if (rum_load_microcode(sc, ucode, size) != 0) { printf("%s: could not load 8051 microcode\n", device_xname(sc->sc_dev)); - firmware_free(ucode, 0); + firmware_free(ucode, size); return ENXIO; } - firmware_free(ucode, 0); + firmware_free(ucode, size); sc->sc_flags |= RT2573_FWLOADED; return 0; Index: src/sys/dev/usb/if_urtwn.c diff -u src/sys/dev/usb/if_urtwn.c:1.34 src/sys/dev/usb/if_urtwn.c:1.35 --- src/sys/dev/usb/if_urtwn.c:1.34 Fri Jul 25 15:07:03 2014 +++ src/sys/dev/usb/if_urtwn.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_urtwn.c,v 1.34 2014/07/25 15:07:03 nonaka Exp $ */ +/* $NetBSD: if_urtwn.c,v 1.35 2015/01/07 07:05:48 ozaki-r Exp $ */ /* $OpenBSD: if_urtwn.c,v 1.20 2011/11/26 06:39:33 ckuethe Exp $ */ /*- @@ -23,7 +23,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.34 2014/07/25 15:07:03 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.35 2015/01/07 07:05:48 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -3085,7 +3085,7 @@ urtwn_load_firmware(struct urtwn_softc * if (error != 0) { aprint_error_dev(sc->sc_dev, "failed to read firmware (error %d)\n", error); - firmware_free(fw, 0); + firmware_free(fw, len); return (error); } @@ -3175,7 +3175,7 @@ urtwn_load_firmware(struct urtwn_softc * goto fail; } fail: - firmware_free(fw, 0); + firmware_free(fw, len); return (error); } Index: src/sys/dev/usb/if_zyd.c diff -u src/sys/dev/usb/if_zyd.c:1.36 src/sys/dev/usb/if_zyd.c:1.37 --- src/sys/dev/usb/if_zyd.c:1.36 Tue Jan 22 12:40:43 2013 +++ src/sys/dev/usb/if_zyd.c Wed Jan 7 07:05:48 2015 @@ -1,5 +1,5 @@ /* $OpenBSD: if_zyd.c,v 1.52 2007/02/11 00:08:04 jsg Exp $ */ -/* $NetBSD: if_zyd.c,v 1.36 2013/01/22 12:40:43 jmcneill Exp $ */ +/* $NetBSD: if_zyd.c,v 1.37 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2006 by Damien Bergamini <damien.bergam...@free.fr> @@ -23,7 +23,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_zyd.c,v 1.36 2013/01/22 12:40:43 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_zyd.c,v 1.37 2015/01/07 07:05:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/sockio.h> @@ -278,7 +278,7 @@ zyd_attachhook(device_t self) if (error != 0) { aprint_error_dev(sc->sc_dev, "failed to read firmware (error %d)\n", error); - firmware_free(fw, 0); + firmware_free(fw, size); return; } @@ -286,11 +286,11 @@ zyd_attachhook(device_t self) if (error != 0) { aprint_error_dev(sc->sc_dev, "could not load firmware (error=%d)\n", error); - firmware_free(fw, 0); + firmware_free(fw, size); return; } - firmware_free(fw, 0); + firmware_free(fw, size); sc->sc_flags |= ZD1211_FWLOADED; /* complete the attach process */ Index: src/sys/kern/kern_cpu.c diff -u src/sys/kern/kern_cpu.c:1.66 src/sys/kern/kern_cpu.c:1.67 --- src/sys/kern/kern_cpu.c:1.66 Fri Jul 25 08:10:40 2014 +++ src/sys/kern/kern_cpu.c Wed Jan 7 07:05:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_cpu.c,v 1.66 2014/07/25 08:10:40 dholland Exp $ */ +/* $NetBSD: kern_cpu.c,v 1.67 2015/01/07 07:05:48 ozaki-r Exp $ */ /*- * Copyright (c) 2007, 2008, 2009, 2010, 2012 The NetBSD Foundation, Inc. @@ -56,7 +56,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_cpu.c,v 1.66 2014/07/25 08:10:40 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_cpu.c,v 1.67 2015/01/07 07:05:48 ozaki-r Exp $"); #include "opt_cpu_ucode.h" #include "opt_compat_netbsd.h" @@ -605,7 +605,7 @@ cpu_ucode_load(struct cpu_ucode_softc *s int error; if (sc->sc_blob != NULL) { - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; } @@ -632,7 +632,7 @@ cpu_ucode_load(struct cpu_ucode_softc *s return 0; err1: - firmware_free(sc->sc_blob, 0); + firmware_free(sc->sc_blob, sc->sc_blobsize); sc->sc_blob = NULL; sc->sc_blobsize = 0; err0: