Re: SVID semaphores free(9) sizes

2018-12-11 Thread Alexander Bluhm
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;



SVID semaphores free(9) sizes

2018-12-11 Thread Martin Pieuchot
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 -  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;