Hello, OK
regards sasha On Thu, Dec 03, 2015 at 01:21:32PM +0100, Claudio Jeker wrote: > This should cover the simple free calls in pf_ioctl. > > -- > :wq Claudio > > Index: pf_ioctl.c > =================================================================== > RCS file: /cvs/src/sys/net/pf_ioctl.c,v > retrieving revision 1.296 > diff -u -p -r1.296 pf_ioctl.c > --- pf_ioctl.c 3 Dec 2015 10:34:11 -0000 1.296 > +++ pf_ioctl.c 3 Dec 2015 12:08:00 -0000 > @@ -397,7 +397,7 @@ tag_unref(struct pf_tags *head, u_int16_ > if (tag == p->tag) { > if (--p->ref == 0) { > TAILQ_REMOVE(head, p, entries); > - free(p, M_RTABLE, 0); > + free(p, M_RTABLE, sizeof(*p)); > } > break; > } > @@ -1564,7 +1564,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > pf_state_export(pstore, state); > error = copyout(pstore, p, sizeof(*p)); > if (error) { > - free(pstore, M_TEMP, 0); > + free(pstore, M_TEMP, sizeof(*pstore)); > goto fail; > } > p++; > @@ -1575,7 +1575,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > > ps->ps_len = sizeof(struct pfsync_state) * nr; > > - free(pstore, M_TEMP, 0); > + free(pstore, M_TEMP, sizeof(*pstore)); > break; > } > > @@ -2030,8 +2030,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > bzero(&pf_trans_set, sizeof(pf_trans_set)); > for (i = 0; i < io->size; i++) { > if (copyin(io->array+i, ioe, sizeof(*ioe))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EFAULT; > goto fail; > } > @@ -2042,29 +2042,29 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > sizeof(table->pfrt_anchor)); > if ((error = pfr_ina_begin(table, > &ioe->ticket, NULL, 0))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; > } > break; > default: > if ((error = pf_begin_rules(&ioe->ticket, > ioe->anchor))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; > } > break; > } > if (copyout(ioe, io->array+i, sizeof(io->array[i]))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EFAULT; > goto fail; > } > } > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > break; > } > > @@ -2082,8 +2082,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > table = malloc(sizeof(*table), M_TEMP, M_WAITOK); > for (i = 0; i < io->size; i++) { > if (copyin(io->array+i, ioe, sizeof(*ioe))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EFAULT; > goto fail; > } > @@ -2094,23 +2094,23 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > sizeof(table->pfrt_anchor)); > if ((error = pfr_ina_rollback(table, > ioe->ticket, NULL, 0))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; /* really bad */ > } > break; > default: > if ((error = pf_rollback_rules(ioe->ticket, > ioe->anchor))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; /* really bad */ > } > break; > } > } > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > break; > } > > @@ -2130,8 +2130,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > /* first makes sure everything will succeed */ > for (i = 0; i < io->size; i++) { > if (copyin(io->array+i, ioe, sizeof(*ioe))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EFAULT; > goto fail; > } > @@ -2140,8 +2140,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > rs = pf_find_ruleset(ioe->anchor); > if (rs == NULL || !rs->topen || ioe->ticket != > rs->tticket) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EBUSY; > goto fail; > } > @@ -2152,8 +2152,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > !rs->rules.inactive.open || > rs->rules.inactive.ticket != > ioe->ticket) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EBUSY; > goto fail; > } > @@ -2168,8 +2168,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > for (i = 0; i < PF_LIMIT_MAX; i++) { > if (((struct pool *)pf_pool_limits[i].pp)->pr_nout > > pf_pool_limits[i].limit_new) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EBUSY; > goto fail; > } > @@ -2177,8 +2177,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > /* now do the commit - no errors should happen here */ > for (i = 0; i < io->size; i++) { > if (copyin(io->array+i, ioe, sizeof(*ioe))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EFAULT; > goto fail; > } > @@ -2189,16 +2189,16 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > sizeof(table->pfrt_anchor)); > if ((error = pfr_ina_commit(table, ioe->ticket, > NULL, NULL, 0))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; /* really bad */ > } > break; > default: > if ((error = pf_commit_rules(ioe->ticket, > ioe->anchor))) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > goto fail; /* really bad */ > } > break; > @@ -2209,8 +2209,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > pf_pool_limits[i].limit && > pool_sethardlimit(pf_pool_limits[i].pp, > pf_pool_limits[i].limit_new, NULL, 0) != 0) { > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > error = EBUSY; > goto fail; /* really bad */ > } > @@ -2227,8 +2227,8 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > } > pfi_xcommit(); > pf_trans_set_commit(); > - free(table, M_TEMP, 0); > - free(ioe, M_TEMP, 0); > + free(table, M_TEMP, sizeof(*table)); > + free(ioe, M_TEMP, sizeof(*ioe)); > break; > } > > @@ -2276,7 +2276,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > > error = copyout(pstore, p, sizeof(*p)); > if (error) { > - free(pstore, M_TEMP, 0); > + free(pstore, M_TEMP, sizeof(*pstore)); > goto fail; > } > p++; > @@ -2284,7 +2284,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > } > psn->psn_len = sizeof(struct pf_src_node) * nr; > > - free(pstore, M_TEMP, 0); > + free(pstore, M_TEMP, sizeof(*pstore)); > break; > } > >