Module Name: src
Committed By: christos
Date: Sun Mar 6 19:46:05 UTC 2016
Modified Files:
src/sys/netinet: sctputil.c
Log Message:
PR/50899: David Binderman: optimize memset
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/netinet/sctputil.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/netinet/sctputil.c
diff -u src/sys/netinet/sctputil.c:1.2 src/sys/netinet/sctputil.c:1.3
--- src/sys/netinet/sctputil.c:1.2 Mon Feb 15 14:00:42 2016
+++ src/sys/netinet/sctputil.c Sun Mar 6 14:46:05 2016
@@ -1,5 +1,5 @@
/* $KAME: sctputil.c,v 1.39 2005/06/16 20:54:06 jinmei Exp $ */
-/* $NetBSD: sctputil.c,v 1.2 2016/02/15 19:00:42 rtr Exp $ */
+/* $NetBSD: sctputil.c,v 1.3 2016/03/06 19:46:05 christos Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Cisco Systems, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sctputil.c,v 1.2 2016/02/15 19:00:42 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sctputil.c,v 1.3 2016/03/06 19:46:05 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -844,9 +844,10 @@ sctp_expand_mapping_array(struct sctp_as
{
/* mapping array needs to grow */
u_int8_t *new_array;
- uint16_t new_size;
+ uint16_t new_size, old_size;
- new_size = asoc->mapping_array_size + SCTP_MAPPING_ARRAY_INCR;
+ old_size = asoc->mapping_array_size;
+ new_size = old_size + SCTP_MAPPING_ARRAY_INCR;
new_array = malloc(new_size, M_PCB, M_NOWAIT);
if (new_array == NULL) {
/* can't get more, forget it */
@@ -854,8 +855,8 @@ sctp_expand_mapping_array(struct sctp_as
new_size);
return (-1);
}
- memset(new_array, 0, new_size);
- memcpy(new_array, asoc->mapping_array, asoc->mapping_array_size);
+ memcpy(new_array, asoc->mapping_array, old_size);
+ memset(new_array + old_size, 0, SCTP_MAPPING_ARRAY_INCR);
free(asoc->mapping_array, M_PCB);
asoc->mapping_array = new_array;
asoc->mapping_array_size = new_size;