Module Name: src Committed By: maxv Date: Tue Dec 6 15:09:04 UTC 2016
Modified Files: src/sys/arch/x86/x86: intr.c Log Message: Memory leak, found by Mootja To generate a diff of this commit: cvs rdiff -u -r1.95 -r1.96 src/sys/arch/x86/x86/intr.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/intr.c diff -u src/sys/arch/x86/x86/intr.c:1.95 src/sys/arch/x86/x86/intr.c:1.96 --- src/sys/arch/x86/x86/intr.c:1.95 Wed Nov 16 07:13:01 2016 +++ src/sys/arch/x86/x86/intr.c Tue Dec 6 15:09:04 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.c,v 1.95 2016/11/16 07:13:01 knakahara Exp $ */ +/* $NetBSD: intr.c,v 1.96 2016/12/06 15:09:04 maxv Exp $ */ /*- * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -133,7 +133,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.95 2016/11/16 07:13:01 knakahara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.96 2016/12/06 15:09:04 maxv Exp $"); #include "opt_intrdebug.h" #include "opt_multiprocessor.h" @@ -950,12 +950,14 @@ intr_establish_xname(int legacy_irq, str if (chained == NULL) { if (msipic_is_msi_pic(pic)) { mutex_exit(&cpu_lock); + kmem_free(ih, sizeof(*ih)); printf("%s: %s has no intrsource\n", __func__, intrstr); return NULL; } chained = intr_allocate_io_intrsource(intrstr); if (chained == NULL) { mutex_exit(&cpu_lock); + kmem_free(ih, sizeof(*ih)); printf("%s: can't allocate io_intersource\n", __func__); return NULL; }