ok?

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 -0000      1.53
+++ kern/sysv_sem.c     11 Dec 2018 16:36:20 -0000
@@ -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(&sema_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;

Reply via email to