diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -1655,7 +1655,8 @@ static int sysctl_intrnames(SYSCTL_HANDLER_ARGS) { - return (sysctl_handle_opaque(oidp, intrnames, sintrnames, req)); + return (sysctl_handle_opaque(oidp, intrnames, + intrcnt_index * (MAXCOMLEN + 1), req)); } SYSCTL_PROC(_hw, OID_AUTO, intrnames, @@ -1673,18 +1674,22 @@ if (req->flags & SCTL_MASK32) { if (!req->oldptr) - return (sysctl_handle_opaque(oidp, NULL, sintrcnt / 2, req)); - intrcnt32 = malloc(sintrcnt / 2, M_TEMP, M_NOWAIT); + return (sysctl_handle_opaque(oidp, NULL, + intrcnt_index * sizeof(uint32_t), req); + intrcnt32 = malloc(intrcnt_index * sizeof(uint32_t), M_TEMP, + M_NOWAIT); if (intrcnt32 == NULL) return (ENOMEM); - for (i = 0; i < sintrcnt / sizeof (u_long); i++) + for (i = 0; i < intrcnt_index; i++) intrcnt32[i] = intrcnt[i]; - error = sysctl_handle_opaque(oidp, intrcnt32, sintrcnt / 2, req); + error = sysctl_handle_opaque(oidp, intrcnt32, + intrcnt_index * sizeof(uint32_t), req); free(intrcnt32, M_TEMP); return (error); } #endif - return (sysctl_handle_opaque(oidp, intrcnt, sintrcnt, req)); + return (sysctl_handle_opaque(oidp, intrcnt, + intrcnt_index * sizeof(u_long), req)); } SYSCTL_PROC(_hw, OID_AUTO, intrcnt, @@ -1704,7 +1709,7 @@ cp = intrnames; j = 0; - for (i = intrcnt; j < (sintrcnt / sizeof(u_long)) && !db_pager_quit; + for (i = intrcnt; j < intrcnt_index && !db_pager_quit; i++, j++) { if (*cp == '\0') break; diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -148,9 +148,7 @@ /* Data for MI statistics reporting. */ u_long *intrcnt; char *intrnames; -size_t sintrcnt; -size_t sintrnames; -static u_int intrcnt_index; +u_int intrcnt_index; static struct intr_irqsrc *intr_map_get_isrc(u_int res_id); static void intr_map_set_isrc(u_int res_id, struct intr_irqsrc *isrc); @@ -184,8 +182,6 @@ M_WAITOK | M_ZERO); intrnames = mallocarray(intrcnt_count, INTRNAME_LEN, M_INTRNG, M_WAITOK | M_ZERO); - sintrcnt = intrcnt_count * sizeof(u_long); - sintrnames = intrcnt_count * INTRNAME_LEN; irq_sources = mallocarray(intr_nirq, sizeof(struct intr_irqsrc*), M_INTRNG, M_WAITOK | M_ZERO); } diff --git a/sys/powerpc/powerpc/intr_machdep.c b/sys/powerpc/powerpc/intr_machdep.c --- a/sys/powerpc/powerpc/intr_machdep.c +++ b/sys/powerpc/powerpc/intr_machdep.c @@ -116,7 +116,6 @@ int base; }; -static u_int intrcnt_index = 0; static struct mtx intr_table_lock; static struct powerpc_intr **powerpc_intrs; static struct pic piclist[MAX_PICS]; @@ -131,8 +130,7 @@ u_long *intrcnt; char *intrnames; -size_t sintrcnt = sizeof(intrcnt); -size_t sintrnames = sizeof(intrnames); +u_int intrcnt_index; int nintrcnt; /* @@ -181,8 +179,6 @@ M_ZERO); intrnames = mallocarray(nintrcnt, MAXCOMLEN + 1, M_INTR, M_WAITOK | M_ZERO); - sintrcnt = nintrcnt * sizeof(u_long); - sintrnames = nintrcnt * (MAXCOMLEN + 1); } /* * This needs to happen before SI_SUB_CPU diff --git a/sys/sys/interrupt.h b/sys/sys/interrupt.h --- a/sys/sys/interrupt.h +++ b/sys/sys/interrupt.h @@ -162,8 +162,7 @@ /* Counts and names for statistics (defined in MD code). */ extern u_long *intrcnt; /* counts for each device and stray */ extern char *intrnames; /* string table containing device names */ -extern size_t sintrcnt; /* size of intrcnt table */ -extern size_t sintrnames; /* size of intrnames table */ +extern u_int intrcnt_index; /* number of counters/names */ #ifdef DDB void db_dump_intr_event(struct intr_event *ie, int handlers); diff --git a/sys/x86/x86/intr_machdep.c b/sys/x86/x86/intr_machdep.c --- a/sys/x86/x86/intr_machdep.c +++ b/sys/x86/x86/intr_machdep.c @@ -76,7 +76,6 @@ typedef void (*mask_fn)(void *); -static int intrcnt_index; static struct intsrc **interrupt_sources; #ifdef SMP static struct intsrc **interrupt_sorted; @@ -97,8 +96,7 @@ u_long *intrcnt; char *intrnames; -size_t sintrcnt = sizeof(intrcnt); -size_t sintrnames = sizeof(intrnames); +u_int intrcnt_index; int nintrcnt; static MALLOC_DEFINE(M_INTR, "intr", "Interrupt Sources"); @@ -190,8 +188,6 @@ M_ZERO); intrnames = mallocarray(nintrcnt, MAXCOMLEN + 1, M_INTR, M_WAITOK | M_ZERO); - sintrcnt = nintrcnt * sizeof(u_long); - sintrnames = nintrcnt * (MAXCOMLEN + 1); /* * NB: intrpic_lock is not held here to avoid LORs due to