Module Name: src Committed By: mrg Date: Tue Feb 19 00:34:50 UTC 2019
Modified Files: src/sys/arch/mac68k/mac68k: intr.c Log Message: convert 'extern long intrnames' to 'extern char intrnames[MAX_INAME_LENGTH]'. also, assert that MAX_INAME_LENGTH is not larger than eintrnames - intrnames. fixes gcc 7's object size checker checks. tested by martin@. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/mac68k/mac68k/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/mac68k/mac68k/intr.c diff -u src/sys/arch/mac68k/mac68k/intr.c:1.29 src/sys/arch/mac68k/mac68k/intr.c:1.30 --- src/sys/arch/mac68k/mac68k/intr.c:1.29 Mon Dec 20 00:25:36 2010 +++ src/sys/arch/mac68k/mac68k/intr.c Tue Feb 19 00:34:50 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.c,v 1.29 2010/12/20 00:25:36 matt Exp $ */ +/* $NetBSD: intr.c,v 1.30 2019/02/19 00:34:50 mrg Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.29 2010/12/20 00:25:36 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.30 2019/02/19 00:34:50 mrg Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -100,9 +100,9 @@ void intr_computeipl(void); void intr_init(void) { - extern long intrnames; + extern char intrnames[MAX_INAME_LENGTH]; + extern char eintrnames[] __diagused; const char *inames; - char *g_inames; ipl2psl_table[IPL_NONE] = 0; ipl2psl_table[IPL_SOFTCLOCK] = PSL_S|PSL_IPL1; @@ -111,7 +111,6 @@ intr_init(void) ipl2psl_table[IPL_SOFTBIO] = PSL_S|PSL_IPL1; ipl2psl_table[IPL_HIGH] = PSL_S|PSL_IPL7; - g_inames = (char *) &intrnames; if (mac68k_machine.aux_interrupts) { inames = AUX_INAMES; @@ -132,7 +131,9 @@ intr_init(void) } } - memcpy(g_inames, inames, MAX_INAME_LENGTH); + KASSERT(MAX_INAME_LENGTH <= + ((uintptr_t)eintrnames - (uintptr_t)intrnames)); + memcpy(intrnames, inames, MAX_INAME_LENGTH); intr_computeipl();