netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Phil Sutter <phil@nwl.cc>
To: Stephen Hemminger <shemming@brocade.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
	David Ahern <dsa@cumulusnetworks.com>,
	Nicolas Dichtel <nicolas.dichtel@6wind.com>,
	Julien Floret <julien.floret@6wind.com>,
	David Laight <David.Laight@ACULAB.COM>,
	netdev@vger.kernel.org
Subject: [iproute PATCH v4 3/5] Replace malloc && memset by calloc
Date: Wed, 13 Jul 2016 20:47:17 +0200	[thread overview]
Message-ID: <1468435639-6892-4-git-send-email-phil@nwl.cc> (raw)
In-Reply-To: <1468435639-6892-1-git-send-email-phil@nwl.cc>

This only replaces occurrences where the newly allocated memory is
cleared completely afterwards, as in other cases it is a theoretical
performance hit although code would be cleaner this way.

Signed-off-by: Phil Sutter <phil@nwl.cc>
---
Changes since v2:
- Fix checkpatch errors.
---
 genl/genl.c        |  3 +--
 lib/names.c        |  7 ++-----
 misc/lnstat.c      |  6 ++----
 misc/lnstat_util.c |  4 +---
 tc/em_canid.c      |  4 ++--
 tc/m_action.c      |  3 +--
 tc/m_ipt.c         | 13 ++++---------
 tc/m_pedit.c       |  3 +--
 tc/tc.c            |  9 +++------
 tc/tc_bpf.c        |  4 +---
 tc/tc_class.c      |  3 +--
 tc/tc_exec.c       |  3 +--
 12 files changed, 20 insertions(+), 42 deletions(-)

diff --git a/genl/genl.c b/genl/genl.c
index e33fafdf2f524..747074b029a7b 100644
--- a/genl/genl.c
+++ b/genl/genl.c
@@ -86,9 +86,8 @@ reg:
 	return f;
 
 noexist:
-	f = malloc(sizeof(*f));
+	f = calloc(1, sizeof(*f));
 	if (f) {
-		memset(f, 0, sizeof(*f));
 		strncpy(f->name, str, 15);
 		f->parse_genlopt = parse_nofopt;
 		f->print_genlopt = print_nofopt;
diff --git a/lib/names.c b/lib/names.c
index 3b5b0b1e1201a..fbd6503f22d42 100644
--- a/lib/names.c
+++ b/lib/names.c
@@ -54,15 +54,12 @@ struct db_names *db_names_alloc(void)
 {
 	struct db_names *db;
 
-	db = malloc(sizeof(*db));
+	db = calloc(1, sizeof(*db));
 	if (!db)
 		return NULL;
 
-	memset(db, 0, sizeof(*db));
-
 	db->size = MAX_ENTRIES;
-	db->hash = malloc(sizeof(struct db_entry *) * db->size);
-	memset(db->hash, 0, sizeof(struct db_entry *) * db->size);
+	db->hash = calloc(db->size, sizeof(struct db_entry *));
 
 	return db;
 }
diff --git a/misc/lnstat.c b/misc/lnstat.c
index 659a01bd69931..863fd4d9f03f2 100644
--- a/misc/lnstat.c
+++ b/misc/lnstat.c
@@ -182,10 +182,8 @@ static struct table_hdr *build_hdr_string(struct lnstat_file *lnstat_files,
 	static struct table_hdr th;
 	int ofs = 0;
 
-	for (i = 0; i < HDR_LINES; i++) {
-		th.hdr[i] = malloc(HDR_LINE_LENGTH);
-		memset(th.hdr[i], 0, HDR_LINE_LENGTH);
-	}
+	for (i = 0; i < HDR_LINES; i++)
+		th.hdr[i] = calloc(1, HDR_LINE_LENGTH);
 
 	for (i = 0; i < fps->num; i++) {
 		char *cname, *fname = fps->params[i].lf->name;
diff --git a/misc/lnstat_util.c b/misc/lnstat_util.c
index d918151282f55..cc54598fe1bef 100644
--- a/misc/lnstat_util.c
+++ b/misc/lnstat_util.c
@@ -173,15 +173,13 @@ static struct lnstat_file *alloc_and_open(const char *path, const char *file)
 	struct lnstat_file *lf;
 
 	/* allocate */
-	lf = malloc(sizeof(*lf));
+	lf = calloc(1, sizeof(*lf));
 	if (!lf) {
 		fprintf(stderr, "out of memory\n");
 		return NULL;
 	}
 
 	/* initialize */
-	memset(lf, 0, sizeof(*lf));
-
 	/* de->d_name is guaranteed to be <= NAME_MAX */
 	strcpy(lf->basename, file);
 	strcpy(lf->path, path);
diff --git a/tc/em_canid.c b/tc/em_canid.c
index 16f6ed5c0b7a4..ceb64cb933f51 100644
--- a/tc/em_canid.c
+++ b/tc/em_canid.c
@@ -106,8 +106,8 @@ static int canid_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
 	if (args == NULL)
 		return PARSE_ERR(args, "canid: missing arguments");
 
-	rules.rules_raw = malloc(sizeof(struct can_filter) * rules.rules_capacity);
-	memset(rules.rules_raw, 0, sizeof(struct can_filter) * rules.rules_capacity);
+	rules.rules_raw = calloc(rules.rules_capacity,
+				 sizeof(struct can_filter));
 
 	do {
 		if (!bstrcmp(args, "sff")) {
diff --git a/tc/m_action.c b/tc/m_action.c
index 806fdd197965d..24f8b5d855211 100644
--- a/tc/m_action.c
+++ b/tc/m_action.c
@@ -126,9 +126,8 @@ noexist:
 		goto restart_s;
 	}
 #endif
-	a = malloc(sizeof(*a));
+	a = calloc(1, sizeof(*a));
 	if (a) {
-		memset(a, 0, sizeof(*a));
 		strncpy(a->id, "noact", 15);
 		a->parse_aopt = parse_noaopt;
 		a->print_aopt = print_noaopt;
diff --git a/tc/m_ipt.c b/tc/m_ipt.c
index 098f610f9439a..d6f62bd6b32c9 100644
--- a/tc/m_ipt.c
+++ b/tc/m_ipt.c
@@ -164,16 +164,11 @@ get_target_name(const char *name)
 	return NULL;
 #endif
 
-	new_name = malloc(strlen(name) + 1);
-	lname = malloc(strlen(name) + 1);
-	if (new_name)
-		memset(new_name, '\0', strlen(name) + 1);
-	else
+	new_name = calloc(1, strlen(name) + 1);
+	lname = calloc(1, strlen(name) + 1);
+	if (!new_name)
 		exit_error(PARAMETER_PROBLEM, "get_target_name");
-
-	if (lname)
-		memset(lname, '\0', strlen(name) + 1);
-	else
+	if (!lname)
 		exit_error(PARAMETER_PROBLEM, "get_target_name");
 
 	strcpy(new_name, name);
diff --git a/tc/m_pedit.c b/tc/m_pedit.c
index 141c30fb6fabc..35879b7fb72e2 100644
--- a/tc/m_pedit.c
+++ b/tc/m_pedit.c
@@ -107,9 +107,8 @@ reg:
 	return p;
 
 noexist:
-	p = malloc(sizeof(*p));
+	p = calloc(1, sizeof(*p));
 	if (p) {
-		memset(p, 0, sizeof(*p));
 		strncpy(p->id, str, sizeof(p->id) - 1);
 		p->parse_peopt = pedit_parse_nopopt;
 		goto reg;
diff --git a/tc/tc.c b/tc/tc.c
index d0ddb939d4737..8e64a82b4271c 100644
--- a/tc/tc.c
+++ b/tc/tc.c
@@ -133,11 +133,9 @@ reg:
 	return q;
 
 noexist:
-	q = malloc(sizeof(*q));
+	q = calloc(1, sizeof(*q));
 	if (q) {
-
-		memset(q, 0, sizeof(*q));
-		q->id = strcpy(malloc(strlen(str)+1), str);
+		q->id = strdup(str);
 		q->parse_qopt = parse_noqopt;
 		q->print_qopt = print_noqopt;
 		goto reg;
@@ -177,9 +175,8 @@ reg:
 	filter_list = q;
 	return q;
 noexist:
-	q = malloc(sizeof(*q));
+	q = calloc(1, sizeof(*q));
 	if (q) {
-		memset(q, 0, sizeof(*q));
 		strncpy(q->id, str, 15);
 		q->parse_fopt = parse_nofopt;
 		q->print_fopt = print_nofopt;
diff --git a/tc/tc_bpf.c b/tc/tc_bpf.c
index cdbbba6ab8cc8..d3437364e6ce5 100644
--- a/tc/tc_bpf.c
+++ b/tc/tc_bpf.c
@@ -108,12 +108,10 @@ static int bpf_parse_string(char *arg, bool from_file, __u16 *bpf_len,
 		FILE *fp;
 
 		tmp_len = sizeof("4096,") + BPF_MAXINSNS * op_len;
-		tmp_string = malloc(tmp_len);
+		tmp_string = calloc(1, tmp_len);
 		if (tmp_string == NULL)
 			return -ENOMEM;
 
-		memset(tmp_string, 0, tmp_len);
-
 		fp = fopen(arg, "r");
 		if (fp == NULL) {
 			perror("Cannot fopen");
diff --git a/tc/tc_class.c b/tc/tc_class.c
index ee9e945acac11..1690ec1bbfad8 100644
--- a/tc/tc_class.c
+++ b/tc/tc_class.c
@@ -163,9 +163,8 @@ __u32 filter_classid;
 static void graph_node_add(__u32 parent_id, __u32 id, void *data,
 		int len)
 {
-	struct graph_node *node = malloc(sizeof(struct graph_node));
+	struct graph_node *node = calloc(1, sizeof(struct graph_node));
 
-	memset(node, 0, sizeof(*node));
 	node->id         = id;
 	node->parent_id  = parent_id;
 
diff --git a/tc/tc_exec.c b/tc/tc_exec.c
index f69b6ba9f6b7e..d23a825dbddf9 100644
--- a/tc/tc_exec.c
+++ b/tc/tc_exec.c
@@ -71,9 +71,8 @@ reg:
 
 	return eu;
 noexist:
-	eu = malloc(sizeof(*eu));
+	eu = calloc(1, sizeof(*eu));
 	if (eu) {
-		memset(eu, 0, sizeof(*eu));
 		strncpy(eu->id, name, sizeof(eu->id) - 1);
 		eu->parse_eopt = parse_noeopt;
 		goto reg;
-- 
2.8.2

  parent reply	other threads:[~2016-07-13 18:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-13 18:47 [iproute PATCH v4 0/5] Big C99 style initializer rework Phil Sutter
2016-07-13 18:47 ` [iproute PATCH v4 1/5] tc: m_action: Improve conversion to C99 style initializers Phil Sutter
2016-07-15 15:32   ` David Ahern
2016-07-13 18:47 ` [iproute PATCH v4 2/5] Use C99 style initializers everywhere Phil Sutter
2016-07-15 15:33   ` David Ahern
2016-07-15 15:36     ` Phil Sutter
2016-07-13 18:47 ` Phil Sutter [this message]
2016-07-15 15:33   ` [iproute PATCH v4 3/5] Replace malloc && memset by calloc David Ahern
2016-07-13 18:47 ` [iproute PATCH v4 4/5] No need to initialize rtattr fields before parsing Phil Sutter
2016-07-15 15:33   ` David Ahern
2016-07-13 18:47 ` [iproute PATCH v4 5/5] Makefile: Allow to override CC Phil Sutter
2016-07-15 15:33   ` David Ahern
2016-07-15 13:25 ` [iproute PATCH v4 0/5] Big C99 style initializer rework Nicolas Dichtel
2016-07-15 18:45 ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1468435639-6892-4-git-send-email-phil@nwl.cc \
    --to=phil@nwl.cc \
    --cc=David.Laight@ACULAB.COM \
    --cc=daniel@iogearbox.net \
    --cc=dsa@cumulusnetworks.com \
    --cc=julien.floret@6wind.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.dichtel@6wind.com \
    --cc=shemming@brocade.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).