From owner-svn-src-all@freebsd.org Mon Jan 15 21:18:06 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AA019E776BC; Mon, 15 Jan 2018 21:18:06 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6C3366EE8E; Mon, 15 Jan 2018 21:18:06 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A9D491693F; Mon, 15 Jan 2018 21:18:05 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0FLI59V066203; Mon, 15 Jan 2018 21:18:05 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0FLI4Bg066196; Mon, 15 Jan 2018 21:18:04 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201801152118.w0FLI4Bg066196@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Mon, 15 Jan 2018 21:18:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r328023 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: pfg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 328023 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2018 21:18:06 -0000 Author: pfg Date: Mon Jan 15 21:18:04 2018 New Revision: 328023 URL: https://svnweb.freebsd.org/changeset/base/328023 Log: kern: make some use of mallocarray(9). Focus on code where we are doing multiplications within malloc(9). None of these ire likely to overflow, however the change is still useful as some static checkers can benefit from the allocation attributes we use for mallocarray. This initial sweep only covers malloc(9) calls with M_NOWAIT. No good reason but I started doing the changes before r327796 and at that time it was convenient to make sure the sorrounding code could handle NULL values. X-Differential revision: https://reviews.freebsd.org/D13837 Modified: head/sys/kern/init_main.c head/sys/kern/kern_cpu.c head/sys/kern/kern_ctf.c head/sys/kern/kern_pmc.c head/sys/kern/subr_bus.c head/sys/kern/subr_taskqueue.c head/sys/kern/subr_vmem.c Modified: head/sys/kern/init_main.c ============================================================================== --- head/sys/kern/init_main.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/init_main.c Mon Jan 15 21:18:04 2018 (r328023) @@ -159,7 +159,7 @@ sysinit_add(struct sysinit **set, struct sysinit **set count += newsysinit_end - newsysinit; else count += sysinit_end - sysinit; - newset = malloc(count * sizeof(*sipp), M_TEMP, M_NOWAIT); + newset = mallocarray(count, sizeof(*sipp), M_TEMP, M_NOWAIT); if (newset == NULL) panic("cannot malloc for sysinit"); xipp = newset; Modified: head/sys/kern/kern_cpu.c ============================================================================== --- head/sys/kern/kern_cpu.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/kern_cpu.c Mon Jan 15 21:18:04 2018 (r328023) @@ -444,7 +444,7 @@ cf_get_method(device_t dev, struct cf_level *level) * match of settings against each level. */ count = CF_MAX_LEVELS; - levels = malloc(count * sizeof(*levels), M_TEMP, M_NOWAIT); + levels = mallocarray(count, sizeof(*levels), M_TEMP, M_NOWAIT); if (levels == NULL) return (ENOMEM); error = CPUFREQ_LEVELS(sc->dev, levels, &count); @@ -969,7 +969,7 @@ cpufreq_settings_sysctl(SYSCTL_HANDLER_ARGS) /* Get settings from the device and generate the output string. */ set_count = MAX_SETTINGS; - sets = malloc(set_count * sizeof(*sets), M_TEMP, M_NOWAIT); + sets = mallocarray(set_count, sizeof(*sets), M_TEMP, M_NOWAIT); if (sets == NULL) { sbuf_delete(&sb); return (ENOMEM); Modified: head/sys/kern/kern_ctf.c ============================================================================== --- head/sys/kern/kern_ctf.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/kern_ctf.c Mon Jan 15 21:18:04 2018 (r328023) @@ -45,7 +45,7 @@ z_alloc(void *nil, u_int items, u_int size) { void *ptr; - ptr = malloc(items * size, M_TEMP, M_NOWAIT); + ptr = mallocarray(items, size, M_TEMP, M_NOWAIT); return ptr; } Modified: head/sys/kern/kern_pmc.c ============================================================================== --- head/sys/kern/kern_pmc.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/kern_pmc.c Mon Jan 15 21:18:04 2018 (r328023) @@ -338,7 +338,8 @@ init_hwpmc(void *dummy __unused) "range.\n", pmc_softevents); pmc_softevents = PMC_EV_DYN_COUNT; } - pmc_softs = malloc(pmc_softevents * sizeof(struct pmc_soft *), M_PMCHOOKS, M_NOWAIT|M_ZERO); + pmc_softs = mallocarray(pmc_softevents, sizeof(struct pmc_soft *), + M_PMCHOOKS, M_NOWAIT|M_ZERO); KASSERT(pmc_softs != NULL, ("cannot allocate soft events table")); } Modified: head/sys/kern/subr_bus.c ============================================================================== --- head/sys/kern/subr_bus.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/subr_bus.c Mon Jan 15 21:18:04 2018 (r328023) @@ -1464,7 +1464,7 @@ devclass_get_devices(devclass_t dc, device_t **devlist device_t *list; count = devclass_get_count(dc); - list = malloc(count * sizeof(device_t), M_TEMP, M_NOWAIT|M_ZERO); + list = mallocarray(count, sizeof(device_t), M_TEMP, M_NOWAIT|M_ZERO); if (!list) return (ENOMEM); @@ -1680,7 +1680,7 @@ devclass_alloc_unit(devclass_t dc, device_t dev, int * oldlist = dc->devices; newsize = roundup((unit + 1), MINALLOCSIZE / sizeof(device_t)); - newlist = malloc(sizeof(device_t) * newsize, M_BUS, M_NOWAIT); + newlist = mallocarray(newsize, sizeof(device_t), M_BUS, M_NOWAIT); if (!newlist) return (ENOMEM); if (oldlist != NULL) @@ -2300,7 +2300,7 @@ device_get_children(device_t dev, device_t **devlistp, return (0); } - list = malloc(count * sizeof(device_t), M_TEMP, M_NOWAIT|M_ZERO); + list = mallocarray(count, sizeof(device_t), M_TEMP, M_NOWAIT|M_ZERO); if (!list) return (ENOMEM); Modified: head/sys/kern/subr_taskqueue.c ============================================================================== --- head/sys/kern/subr_taskqueue.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/subr_taskqueue.c Mon Jan 15 21:18:04 2018 (r328023) @@ -651,8 +651,8 @@ _taskqueue_start_threads(struct taskqueue **tqp, int c vsnprintf(ktname, sizeof(ktname), name, ap); tq = *tqp; - tq->tq_threads = malloc(sizeof(struct thread *) * count, M_TASKQUEUE, - M_NOWAIT | M_ZERO); + tq->tq_threads = mallocarray(count, sizeof(struct thread *), + M_TASKQUEUE, M_NOWAIT | M_ZERO); if (tq->tq_threads == NULL) { printf("%s: no memory for %s threads\n", __func__, ktname); return (ENOMEM); Modified: head/sys/kern/subr_vmem.c ============================================================================== --- head/sys/kern/subr_vmem.c Mon Jan 15 21:15:25 2018 (r328022) +++ head/sys/kern/subr_vmem.c Mon Jan 15 21:18:04 2018 (r328023) @@ -692,7 +692,7 @@ vmem_rehash(vmem_t *vm, vmem_size_t newhashsize) MPASS(newhashsize > 0); - newhashlist = malloc(sizeof(struct vmem_hashlist) * newhashsize, + newhashlist = mallocarray(newhashsize, sizeof(struct vmem_hashlist), M_VMEM, M_NOWAIT); if (newhashlist == NULL) return ENOMEM;