From owner-svn-src-projects@FreeBSD.ORG Tue Apr 10 14:29:57 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6857C106564A; Tue, 10 Apr 2012 14:29:57 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 495008FC08; Tue, 10 Apr 2012 14:29:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q3AETvAK027615; Tue, 10 Apr 2012 14:29:57 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q3AETvab027613; Tue, 10 Apr 2012 14:29:57 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201204101429.q3AETvab027613@svn.freebsd.org> From: Gleb Smirnoff Date: Tue, 10 Apr 2012 14:29:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r234100 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Apr 2012 14:29:57 -0000 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. */