On Tue, Dec 11, 2018 at 02:40:16PM -0200, Martin Pieuchot wrote:
> ok?
OK bluhm@
> Index: kern/sysv_sem.c
> ===
> RCS file: /cvs/src/sys/kern/sysv_sem.c,v
> retrieving revision 1.53
> diff -u -p -r1.53 sysv_sem.c
> --- kern/sysv_sem.c 14 Mar 2015 03:38:50 - 1.53
> +++ kern/sysv_sem.c 11 Dec 2018 16:36:20 -
> @@ -275,7 +275,8 @@ semctl1(struct proc *p, int semid, int s
> semaptr->sem_perm.cuid = cred->cr_uid;
> semaptr->sem_perm.uid = cred->cr_uid;
> semtot -= semaptr->sem_nsems;
> - free(semaptr->sem_base, M_SEM, 0);
> + free(semaptr->sem_base, M_SEM,
> + semaptr->sem_nsems * sizeof(struct sem));
> pool_put(_pool, semaptr);
> sema[ix] = NULL;
> semundo_clear(ix, -1);
> @@ -881,8 +882,8 @@ sysctl_sysvsem(int *name, u_int namelen,
> M_WAITOK|M_ZERO);
> memcpy(newseqs, semseqs,
> seminfo.semmni * sizeof(unsigned short));
> - free(sema, M_SEM, 0);
> - free(semseqs, M_SEM, 0);
> + free(sema, M_SEM, seminfo.semmni * sizeof(struct semid_ds *));
> + free(semseqs, M_SEM, seminfo.semmni * sizeof(unsigned short));
> sema = sema_new;
> semseqs = newseqs;
> seminfo.semmni = val;