Date: Tue, 10 Apr 2012 14:29:57 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r234100 - projects/pf/head/sys/contrib/pf/net Message-ID: <201204101429.q3AETvab027613@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Tue Apr 10 14:29:56 2012 New Revision: 234100 URL: http://svn.freebsd.org/changeset/base/234100 Log: Simplify code from r234096. Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Tue Apr 10 14:01:09 2012 (r234099) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Tue Apr 10 14:29:56 2012 (r234100) @@ -2779,19 +2779,19 @@ DIOCGETSTATES_full: case DIOCXBEGIN: { struct pfioc_trans *io = (struct pfioc_trans *)addr; struct pfioc_trans_e *ioes, *ioe; + size_t totlen; int i; if (io->esize != sizeof(*ioe)) { error = ENODEV; goto fail; } - ioes = malloc(sizeof(*ioe) * io->size, M_TEMP, M_WAITOK); - for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { - error = copyin(io->array + i, ioe, sizeof(*ioe)); - if (error) { - free(ioes, M_TEMP); - goto fail; - } + totlen = sizeof(struct pfioc_trans_e) * io->size; + ioes = malloc(totlen, M_TEMP, M_WAITOK); + error = copyin(io->array, ioes, totlen); + if (error) { + free(ioes, M_TEMP); + goto fail; } PF_LOCK(); for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { @@ -2837,12 +2837,7 @@ DIOCGETSTATES_full: } } PF_UNLOCK(); - for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { - error = copyout(ioe, io->array + i, - sizeof(io->array[i])); - if (error) - break; - } + error = copyout(ioes, io->array, totlen); free(ioes, M_TEMP); break; } @@ -2850,19 +2845,19 @@ DIOCGETSTATES_full: case DIOCXROLLBACK: { struct pfioc_trans *io = (struct pfioc_trans *)addr; struct pfioc_trans_e *ioe, *ioes; + size_t totlen; int i; if (io->esize != sizeof(*ioe)) { error = ENODEV; goto fail; } - ioes = malloc(sizeof(*ioe) * io->size, M_TEMP, M_WAITOK); - for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { - error = copyin(io->array + i, ioe, sizeof(*ioe)); - if (error) { - free(ioes, M_TEMP); - goto fail; - } + totlen = sizeof(struct pfioc_trans_e) * io->size; + ioes = malloc(totlen, M_TEMP, M_WAITOK); + error = copyin(io->array, ioes, totlen); + if (error) { + free(ioes, M_TEMP); + goto fail; } PF_LOCK(); for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { @@ -2916,19 +2911,19 @@ DIOCGETSTATES_full: struct pfioc_trans *io = (struct pfioc_trans *)addr; struct pfioc_trans_e *ioe, *ioes; struct pf_ruleset *rs; + size_t totlen; int i; if (io->esize != sizeof(*ioe)) { error = ENODEV; goto fail; } - ioes = malloc(sizeof(*ioe) * io->size, M_TEMP, M_WAITOK); - for (i = 0, ioe = ioes; i < io->size; i++, ioe++) { - error = copyin(io->array + i, ioe, sizeof(*ioe)); - if (error) { - free(ioes, M_TEMP); - goto fail; - } + totlen = sizeof(struct pfioc_trans_e) * io->size; + ioes = malloc(totlen, M_TEMP, M_WAITOK); + error = copyin(io->array, ioes, totlen); + if (error) { + free(ioes, M_TEMP); + goto fail; } PF_LOCK(); /* First makes sure everything will succeed. */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204101429.q3AETvab027613>