add some sizes to free.
as a bonus, an xxx comment where i believe there's a leak.
Index: aesni.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/aesni.c,v
retrieving revision 1.32
diff -u -p -r1.32 aesni.c
--- aesni.c 14 Mar 2015 03:38:46 -0000 1.32
+++ aesni.c 27 Aug 2015 23:24:18 -0000
@@ -160,7 +160,8 @@ aesni_setup(void)
aesni_sc->sc_cid = crypto_get_driverid(0);
if (aesni_sc->sc_cid < 0) {
- free(aesni_sc, M_DEVBUF, 0);
+ /* xxx free aesni_sc->sc_buf */
+ free(aesni_sc, M_DEVBUF, sizeof(*aesni_sc));
return;
}
@@ -350,12 +351,12 @@ aesni_freesession(u_int64_t tid)
if (ses->ses_ghash) {
explicit_bzero(ses->ses_ghash, sizeof(GHASH_CTX));
- free(ses->ses_ghash, M_CRYPTO_DATA, 0);
+ free(ses->ses_ghash, M_CRYPTO_DATA, sizeof(GHASH_CTX));
}
if (ses->ses_xts) {
explicit_bzero(ses->ses_xts, sizeof(struct aesni_xts_ctx));
- free(ses->ses_xts, M_CRYPTO_DATA, 0);
+ free(ses->ses_xts, M_CRYPTO_DATA, sizeof(struct aesni_xts_ctx));
}
if (ses->ses_swd) {
@@ -364,13 +365,13 @@ aesni_freesession(u_int64_t tid)
if (swd->sw_ictx) {
explicit_bzero(swd->sw_ictx, axf->ctxsize);
- free(swd->sw_ictx, M_CRYPTO_DATA, 0);
+ free(swd->sw_ictx, M_CRYPTO_DATA, axf->ctxsize);
}
if (swd->sw_octx) {
explicit_bzero(swd->sw_octx, axf->ctxsize);
- free(swd->sw_octx, M_CRYPTO_DATA, 0);
+ free(swd->sw_octx, M_CRYPTO_DATA, axf->ctxsize);
}
- free(swd, M_CRYPTO_DATA, 0);
+ free(swd, M_CRYPTO_DATA, sizeof(*swd));
}
explicit_bzero(ses, sizeof (*ses));
@@ -409,7 +410,7 @@ aesni_encdec(struct cryptop *crp, struct
if (crd->crd_len > aesni_sc->sc_buflen) {
if (buf != NULL) {
explicit_bzero(buf, aesni_sc->sc_buflen);
- free(buf, M_DEVBUF, 0);
+ free(buf, M_DEVBUF, aesni_sc->sc_buflen);
}
aesni_sc->sc_buflen = 0;
Index: est.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/est.c,v
retrieving revision 1.36
diff -u -p -r1.36 est.c
--- est.c 14 Mar 2015 03:38:46 -0000 1.36
+++ est.c 27 Aug 2015 23:26:43 -0000
@@ -253,7 +253,7 @@ est_acpi_init()
return acpilist;
notable:
- free(acpilist, M_DEVBUF, 0);
+ free(acpilist, M_DEVBUF, sizeof(struct fqlist));
acpilist = NULL;
nolist:
return NULL;
@@ -281,7 +281,7 @@ est_acpi_pss_changed(struct acpicpu_pss
M_DEVBUF, M_NOWAIT)) == NULL) {
printf("est_acpi_pss_changed: cannot allocate memory for new "
"operating points");
- free(acpilist, M_DEVBUF, 0);
+ free(acpilist, M_DEVBUF, sizeof(struct fqlist));
return;
}
@@ -292,8 +292,8 @@ est_acpi_pss_changed(struct acpicpu_pss
needtran = 0;
}
- free(est_fqlist->table, M_DEVBUF, 0);
- free(est_fqlist, M_DEVBUF, 0);
+ free(est_fqlist->table, M_DEVBUF, npss * sizeof(struct est_op));
+ free(est_fqlist, M_DEVBUF, sizeof(struct fqlist));
est_fqlist = acpilist;
if (needtran) {
@@ -381,7 +381,7 @@ est_init(struct cpu_info *ci)
if ((fake_table = malloc(sizeof(struct est_op) * 3, M_DEVBUF,
M_NOWAIT)) == NULL) {
- free(fake_fqlist, M_DEVBUF, 0);
+ free(fake_fqlist, M_DEVBUF, sizeof(struct fqlist));
printf("%s: EST: cannot allocate memory for fake "
"table\n", cpu_device);
return;
Index: intr.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/intr.c,v
retrieving revision 1.43
diff -u -p -r1.43 intr.c
--- intr.c 16 Jul 2015 05:10:14 -0000 1.43
+++ intr.c 27 Aug 2015 23:20:42 -0000
@@ -307,7 +307,7 @@ other:
found:
idtvec = idt_vec_alloc(APIC_LEVEL(level), IDT_INTR_HIGH);
if (idtvec == 0) {
- free(ci->ci_isources[slot], M_DEVBUF, 0);
+ free(ci->ci_isources[slot], M_DEVBUF, sizeof (struct
intrsource));
ci->ci_isources[slot] = NULL;
return EBUSY;
}
@@ -367,7 +367,7 @@ intr_establish(int legacy_irq, struct pi
if (source->is_handlers != NULL &&
source->is_pic->pic_type != pic->pic_type) {
- free(ih, M_DEVBUF, 0);
+ free(ih, M_DEVBUF, sizeof *ih);
printf("intr_establish: can't share intr source between "
"different PIC types (legacy_irq %d pin %d slot %d)\n",
legacy_irq, pin, slot);
@@ -392,7 +392,7 @@ intr_establish(int legacy_irq, struct pi
printf("intr_establish: pic %s pin %d: can't share "
"type %d with %d\n", pic->pic_name, pin,
source->is_type, type);
- free(ih, M_DEVBUF, 0);
+ free(ih, M_DEVBUF, sizeof *ih);
return NULL;
}
break;
@@ -500,14 +500,14 @@ intr_disestablish(struct intrhand *ih)
#endif
if (source->is_handlers == NULL) {
- free(source, M_DEVBUF, 0);
+ free(source, M_DEVBUF, sizeof (struct intrsource));
ci->ci_isources[ih->ih_slot] = NULL;
if (pic != &i8259_pic)
idt_vec_free(idtvec);
}
evcount_detach(&ih->ih_count);
- free(ih, M_DEVBUF, 0);
+ free(ih, M_DEVBUF, sizeof *ih);
}
int