sprinkle malloc array in the kern directory.
Index: exec_subr.c
===================================================================
RCS file: /cvs/src/sys/kern/exec_subr.c,v
retrieving revision 1.36
diff -u -p -r1.36 exec_subr.c
--- exec_subr.c 12 Jul 2014 18:43:32 -0000 1.36
+++ exec_subr.c 13 Jul 2014 15:13:59 -0000
@@ -91,7 +91,7 @@ vmcmdset_extend(struct exec_vmcmd_set *e
evsp->evs_cnt += ocnt;
/* reallocate the command set */
- nvcp = malloc(evsp->evs_cnt * sizeof(struct exec_vmcmd), M_EXEC,
+ nvcp = mallocarray(evsp->evs_cnt, sizeof(struct exec_vmcmd), M_EXEC,
M_WAITOK);
bcopy(evsp->evs_cmds, nvcp, (ocnt * sizeof(struct exec_vmcmd)));
if (evsp->evs_cmds != evsp->evs_start)
Index: kern_descrip.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_descrip.c,v
retrieving revision 1.111
diff -u -p -r1.111 kern_descrip.c
--- kern_descrip.c 12 Jul 2014 18:43:32 -0000 1.111
+++ kern_descrip.c 13 Jul 2014 15:14:00 -0000
@@ -765,7 +765,7 @@ fdexpand(struct proc *p)
else
nfiles = 2 * fdp->fd_nfiles;
- newofile = malloc(nfiles * OFILESIZE, M_FILEDESC, M_WAITOK);
+ newofile = mallocarray(nfiles, OFILESIZE, M_FILEDESC, M_WAITOK);
newofileflags = (char *) &newofile[nfiles];
/*
@@ -784,9 +784,9 @@ fdexpand(struct proc *p)
free(fdp->fd_ofiles, M_FILEDESC, 0);
if (NDHISLOTS(nfiles) > NDHISLOTS(fdp->fd_nfiles)) {
- newhimap = malloc(NDHISLOTS(nfiles) * sizeof(u_int),
+ newhimap = mallocarray(NDHISLOTS(nfiles), sizeof(u_int),
M_FILEDESC, M_WAITOK);
- newlomap = malloc(NDLOSLOTS(nfiles) * sizeof(u_int),
+ newlomap = mallocarray(NDLOSLOTS(nfiles), sizeof(u_int),
M_FILEDESC, M_WAITOK);
copylen = NDHISLOTS(fdp->fd_nfiles) * sizeof(u_int);
@@ -939,7 +939,7 @@ fdcopy(struct process *pr)
i = newfdp->fd_nfiles;
while (i >= 2 * NDEXTENT && i > newfdp->fd_lastfile * 2)
i /= 2;
- newfdp->fd_ofiles = malloc(i * OFILESIZE, M_FILEDESC, M_WAITOK);
+ newfdp->fd_ofiles = mallocarray(i, OFILESIZE, M_FILEDESC,
M_WAITOK);
newfdp->fd_ofileflags = (char *) &newfdp->fd_ofiles[i];
}
if (NDHISLOTS(i) <= NDHISLOTS(NDFILE)) {
@@ -948,9 +948,9 @@ fdcopy(struct process *pr)
newfdp->fd_lomap =
((struct filedesc0 *) newfdp)->fd_dlomap;
} else {
- newfdp->fd_himap = malloc(NDHISLOTS(i) * sizeof(u_int),
+ newfdp->fd_himap = mallocarray(NDHISLOTS(i), sizeof(u_int),
M_FILEDESC, M_WAITOK);
- newfdp->fd_lomap = malloc(NDLOSLOTS(i) * sizeof(u_int),
+ newfdp->fd_lomap = mallocarray(NDLOSLOTS(i), sizeof(u_int),
M_FILEDESC, M_WAITOK);
}
newfdp->fd_nfiles = i;
Index: kern_subr.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_subr.c,v
retrieving revision 1.38
diff -u -p -r1.38 kern_subr.c
--- kern_subr.c 12 Jul 2014 18:43:32 -0000 1.38
+++ kern_subr.c 13 Jul 2014 15:14:00 -0000
@@ -166,7 +166,7 @@ hashinit(int elements, int type, int fla
panic("hashinit: bad cnt");
for (hashsize = 1; hashsize < elements; hashsize <<= 1)
continue;
- hashtbl = malloc(hashsize * sizeof(*hashtbl), type, flags);
+ hashtbl = mallocarray(hashsize, sizeof(*hashtbl), type, flags);
if (hashtbl == NULL)
return NULL;
for (i = 0; i < hashsize; i++)
Index: kern_sysctl.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_sysctl.c,v
retrieving revision 1.256
diff -u -p -r1.256 kern_sysctl.c
--- kern_sysctl.c 12 Jul 2014 18:43:32 -0000 1.256
+++ kern_sysctl.c 13 Jul 2014 15:14:00 -0000
@@ -1854,7 +1854,7 @@ sysctl_diskinit(int update, struct proc
free(diskstats, M_SYSCTL, 0);
diskstats = NULL;
disknames = NULL;
- diskstats = malloc(disk_count * sizeof(struct diskstats),
+ diskstats = mallocarray(disk_count, sizeof(struct diskstats),
M_SYSCTL, M_WAITOK);
disknames = malloc(tlen, M_SYSCTL, M_WAITOK);
disknames[0] = '\0';
Index: subr_autoconf.c
===================================================================
RCS file: /cvs/src/sys/kern/subr_autoconf.c,v
retrieving revision 1.77
diff -u -p -r1.77 subr_autoconf.c
--- subr_autoconf.c 12 Jul 2014 18:43:32 -0000 1.77
+++ subr_autoconf.c 13 Jul 2014 15:14:00 -0000
@@ -462,7 +462,7 @@ config_make_softc(struct device *parent,
while (new <= dev->dv_unit)
new *= 2;
cd->cd_ndevs = new;
- nsp = malloc(new * sizeof(void *), M_DEVBUF, M_NOWAIT|M_ZERO);
+ nsp = mallocarray(new, sizeof(void *), M_DEVBUF,
M_NOWAIT|M_ZERO);
if (nsp == NULL)
panic("config_make_softc: %sing dev array",
old != 0 ? "expand" : "creat");
Index: subr_userconf.c
===================================================================
RCS file: /cvs/src/sys/kern/subr_userconf.c,v
retrieving revision 1.40
diff -u -p -r1.40 subr_userconf.c
--- subr_userconf.c 12 Jul 2014 18:43:32 -0000 1.40
+++ subr_userconf.c 13 Jul 2014 15:14:00 -0000
@@ -485,7 +485,7 @@ userconf_change(int devno)
if (share) {
for (i = 0; locnamp[ln+i] != -1 ; i++)
;
- lk = l = (int *)malloc(sizeof(int) * i,
+ lk = l = mallocarray(i, sizeof(int),
M_TEMP, M_NOWAIT);
if (lk == NULL) {
printf("out of memory.\n");
Index: sys_generic.c
===================================================================
RCS file: /cvs/src/sys/kern/sys_generic.c,v
retrieving revision 1.90
diff -u -p -r1.90 sys_generic.c
--- sys_generic.c 12 Jul 2014 21:21:19 -0000 1.90
+++ sys_generic.c 13 Jul 2014 15:14:00 -0000
@@ -616,7 +616,7 @@ dopselect(struct proc *p, int nd, fd_set
if (ni > sizeof(bits[0])) {
caddr_t mbits;
- mbits = malloc(ni * 6, M_TEMP, M_WAITOK|M_ZERO);
+ mbits = mallocarray(6, ni, M_TEMP, M_WAITOK|M_ZERO);
pibits[0] = (fd_set *)&mbits[ni * 0];
pibits[1] = (fd_set *)&mbits[ni * 1];
pibits[2] = (fd_set *)&mbits[ni * 2];
Index: sysv_sem.c
===================================================================
RCS file: /cvs/src/sys/kern/sysv_sem.c,v
retrieving revision 1.48
diff -u -p -r1.48 sysv_sem.c
--- sysv_sem.c 13 Jul 2014 15:00:40 -0000 1.48
+++ sysv_sem.c 13 Jul 2014 15:14:00 -0000
@@ -66,9 +66,9 @@ seminit(void)
&pool_allocator_nointr);
pool_init(&semu_pool, SEMUSZ, 0, 0, 0, "semupl",
&pool_allocator_nointr);
- sema = malloc(seminfo.semmni * sizeof(struct semid_ds *),
+ sema = mallocarray(seminfo.semmni, sizeof(struct semid_ds *),
M_SEM, M_WAITOK|M_ZERO);
- semseqs = malloc(seminfo.semmni * sizeof(unsigned short),
+ semseqs = mallocarray(seminfo.semmni, sizeof(unsigned short),
M_SEM, M_WAITOK|M_ZERO);
SLIST_INIT(&semu_list);
}
@@ -360,7 +360,7 @@ semctl1(struct proc *p, int semid, int s
case SETALL:
if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W)))
return (error);
- semval = malloc(semaptr->sem_nsems * sizeof(arg->array[0]),
+ semval = mallocarray(semaptr->sem_nsems, sizeof(arg->array[0]),
M_TEMP, M_WAITOK);
for (i = 0; i < semaptr->sem_nsems; i++) {
error = ds_copyin(&arg->array[i], &semval[i],
@@ -424,7 +424,7 @@ sys_semget(struct proc *p, void *v, regi
return (ENOSPC);
}
semaptr_new = pool_get(&sema_pool, PR_WAITOK);
- semaptr_new->sem_base = malloc(nsems * sizeof(struct sem),
+ semaptr_new->sem_base = mallocarray(nsems, sizeof(struct sem),
M_SEM, M_WAITOK|M_ZERO);
}
@@ -547,7 +547,7 @@ sys_semop(struct proc *p, void *v, regis
if (nsops <= NSOPS)
sops = sopbuf;
else
- sops = malloc(nsops * sizeof(struct sembuf), M_SEM, M_WAITOK);
+ sops = mallocarray(nsops, sizeof(struct sembuf), M_SEM,
M_WAITOK);
error = copyin(SCARG(uap, sops), sops, nsops * sizeof(struct sembuf));
if (error != 0) {
DPRINTF(("error = %d from copyin(%p, %p, %u)\n", error,
@@ -875,11 +875,11 @@ sysctl_sysvsem(int *name, u_int namelen,
return (EINVAL);
/* Expand semsegs and semseqs arrays */
- sema_new = malloc(val * sizeof(struct semid_ds *),
+ sema_new = mallocarray(val, sizeof(struct semid_ds *),
M_SEM, M_WAITOK|M_ZERO);
bcopy(sema, sema_new,
seminfo.semmni * sizeof(struct semid_ds *));
- newseqs = malloc(val * sizeof(unsigned short), M_SEM,
+ newseqs = mallocarray(val, sizeof(unsigned short), M_SEM,
M_WAITOK|M_ZERO);
bcopy(semseqs, newseqs,
seminfo.semmni * sizeof(unsigned short));
Index: sysv_shm.c
===================================================================
RCS file: /cvs/src/sys/kern/sysv_shm.c,v
retrieving revision 1.57
diff -u -p -r1.57 sysv_shm.c
--- sysv_shm.c 12 Jul 2014 18:43:32 -0000 1.57
+++ sysv_shm.c 13 Jul 2014 15:14:00 -0000
@@ -592,13 +592,13 @@ sysctl_sysvshm(int *name, u_int namelen,
return (EINVAL);
/* Expand shmsegs and shmseqs arrays */
- newsegs = malloc(val * sizeof(struct shmid_ds *),
+ newsegs = mallocarray(val, sizeof(struct shmid_ds *),
M_SHM, M_WAITOK|M_ZERO);
bcopy(shmsegs, newsegs,
shminfo.shmmni * sizeof(struct shmid_ds *));
free(shmsegs, M_SHM, 0);
shmsegs = newsegs;
- newseqs = malloc(val * sizeof(unsigned short), M_SHM,
+ newseqs = mallocarray(val, sizeof(unsigned short), M_SHM,
M_WAITOK|M_ZERO);
bcopy(shmseqs, newseqs,
shminfo.shmmni * sizeof(unsigned short));
Index: tty.c
===================================================================
RCS file: /cvs/src/sys/kern/tty.c,v
retrieving revision 1.111
diff -u -p -r1.111 tty.c
--- tty.c 12 Jul 2014 18:43:32 -0000 1.111
+++ tty.c 13 Jul 2014 15:14:00 -0000
@@ -2367,7 +2367,7 @@ ttystats_init(struct itty **ttystats)
struct itty *itp;
struct tty *tp;
- *ttystats = malloc(tty_count * sizeof(struct itty),
+ *ttystats = mallocarray(tty_count, sizeof(struct itty),
M_SYSCTL, M_WAITOK|M_ZERO);
for (tp = TAILQ_FIRST(&ttylist), itp = *ttystats; tp;
tp = TAILQ_NEXT(tp, tty_link), itp++) {
Index: tty_pty.c
===================================================================
RCS file: /cvs/src/sys/kern/tty_pty.c,v
retrieving revision 1.67
diff -u -p -r1.67 tty_pty.c
--- tty_pty.c 12 Jul 2014 18:43:32 -0000 1.67
+++ tty_pty.c 13 Jul 2014 15:14:00 -0000
@@ -150,7 +150,7 @@ ptyarralloc(int nelem)
{
struct pt_softc **pt;
- pt = malloc(nelem * sizeof(struct pt_softc *), M_DEVBUF,
+ pt = mallocarray(nelem, sizeof(struct pt_softc *), M_DEVBUF,
M_WAITOK|M_ZERO);
return pt;
}
Index: uipc_usrreq.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_usrreq.c,v
retrieving revision 1.74
diff -u -p -r1.74 uipc_usrreq.c
--- uipc_usrreq.c 12 Jul 2014 18:43:32 -0000 1.74
+++ uipc_usrreq.c 13 Jul 2014 15:14:01 -0000
@@ -670,7 +670,7 @@ unp_externalize(struct mbuf *rights, soc
rp = (struct file **)CMSG_DATA(cm);
- fdp = malloc(nfds * sizeof(int), M_TEMP, M_WAITOK);
+ fdp = mallocarray(nfds, sizeof(int), M_TEMP, M_WAITOK);
/* Make sure the recipient should be able to see the descriptors.. */
if (p->p_fd->fd_rdir != NULL) {
@@ -961,7 +961,7 @@ unp_gc(void)
*
* 91/09/19, b...@cs.cmu.edu
*/
- extra_ref = malloc(nfiles * sizeof(struct file *), M_FILE, M_WAITOK);
+ extra_ref = mallocarray(nfiles, sizeof(struct file *), M_FILE,
M_WAITOK);
for (nunref = 0, fp = LIST_FIRST(&filehead), fpp = extra_ref;
fp != NULL; fp = nextfp) {
nextfp = LIST_NEXT(fp, f_list);
Index: vfs_bio.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_bio.c,v
retrieving revision 1.158
diff -u -p -r1.158 vfs_bio.c
--- vfs_bio.c 12 Jul 2014 18:43:32 -0000 1.158
+++ vfs_bio.c 13 Jul 2014 15:14:01 -0000
@@ -441,7 +441,7 @@ bread_cluster(struct vnode *vp, daddr_t
if (howmany > maxra)
howmany = maxra;
- xbpp = malloc((howmany + 1) * sizeof(struct buf *), M_TEMP, M_NOWAIT);
+ xbpp = mallocarray((howmany + 1), sizeof(struct buf *), M_TEMP,
M_NOWAIT);
if (xbpp == NULL)
goto out;