All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
To: linux-hotplug@vger.kernel.org
Subject: [PATCH] Use more appropriate alternatives to malloc()
Date: Tue, 21 Oct 2008 10:10:32 +0000	[thread overview]
Message-ID: <48FDAA98.8030309@tuffmail.co.uk> (raw)

Use calloc to request cleared memory instead.
Kernel and libc conspire to make this more efficient.

Also, replace one malloc() + strcpy() with strdup().

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>

diff --git a/extras/collect/collect.c b/extras/collect/collect.c
index 355b85b..3a7e826 100644
--- a/extras/collect/collect.c
+++ b/extras/collect/collect.c
@@ -171,8 +171,7 @@ static int checkout(int fd)
 				if (debug)
 					fprintf(stderr, "Found word %s\n", word);
 				him = malloc(sizeof (struct _mate));
-				him->name = malloc(strlen(word) + 1);
-				strcpy(him->name, word);
+				him->name = strdup(word);
 				him->state = STATE_OLD;
 				udev_list_node_append(&him->node, &bunch);
 				word = NULL;
diff --git a/extras/volume_id/lib/volume_id.c b/extras/volume_id/lib/volume_id.c
index 791be43..8f22509 100644
--- a/extras/volume_id/lib/volume_id.c
+++ b/extras/volume_id/lib/volume_id.c
@@ -483,10 +483,9 @@ struct volume_id *volume_id_open_fd(int fd)
 {
 	struct volume_id *id;
 
-	id = malloc(sizeof(struct volume_id));
+	id = calloc(1, sizeof(struct volume_id));
 	if (id = NULL)
 		return NULL;
-	memset(id, 0x00, sizeof(struct volume_id));
 
 	id->fd = fd;
 
diff --git a/udev/lib/libudev-ctrl.c b/udev/lib/libudev-ctrl.c
index 848f507..2e15db0 100644
--- a/udev/lib/libudev-ctrl.c
+++ b/udev/lib/libudev-ctrl.c
@@ -72,10 +72,9 @@ struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socke
 {
 	struct udev_ctrl *uctrl;
 
-	uctrl = malloc(sizeof(struct udev_ctrl));
+	uctrl = calloc(1, sizeof(struct udev_ctrl));
 	if (uctrl = NULL)
 		return NULL;
-	memset(uctrl, 0x00, sizeof(struct udev_ctrl));
 	uctrl->refcount = 1;
 	uctrl->udev = udev;
 
@@ -213,10 +212,9 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl *uctrl)
 	struct ucred *cred;
 	char cred_msg[CMSG_SPACE(sizeof(struct ucred))];
 
-	uctrl_msg = malloc(sizeof(struct udev_ctrl_msg));
+	uctrl_msg = calloc(1, sizeof(struct udev_ctrl_msg));
 	if (uctrl_msg = NULL)
 		return NULL;
-	memset(uctrl_msg, 0x00, sizeof(struct udev_ctrl_msg));
 	uctrl_msg->refcount = 1;
 	uctrl_msg->uctrl = uctrl;
 
diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c
index 0f793aa..0ae39d6 100644
--- a/udev/lib/libudev-device.c
+++ b/udev/lib/libudev-device.c
@@ -238,10 +238,9 @@ struct udev_device *device_new(struct udev *udev)
 	if (udev = NULL)
 		return NULL;
 
-	udev_device = malloc(sizeof(struct udev_device));
+	udev_device = calloc(1, sizeof(struct udev_device));
 	if (udev_device = NULL)
 		return NULL;
-	memset(udev_device, 0x00, sizeof(struct udev_device));
 	udev_device->refcount = 1;
 	udev_device->udev = udev;
 	udev_list_init(&udev_device->devlinks_list);
diff --git a/udev/lib/libudev-enumerate.c b/udev/lib/libudev-enumerate.c
index fab9c4d..6942003 100644
--- a/udev/lib/libudev-enumerate.c
+++ b/udev/lib/libudev-enumerate.c
@@ -53,10 +53,9 @@ struct udev_enumerate *udev_enumerate_new(struct udev *udev)
 {
 	struct udev_enumerate *udev_enumerate;
 
-	udev_enumerate = malloc(sizeof(struct udev_enumerate));
+	udev_enumerate = calloc(1, sizeof(struct udev_enumerate));
 	if (udev_enumerate = NULL)
 		return NULL;
-	memset(udev_enumerate, 0x00, (sizeof(struct udev_enumerate)));
 	udev_enumerate->refcount = 1;
 	udev_enumerate->udev = udev;
 	udev_list_init(&udev_enumerate->devices_list);
diff --git a/udev/lib/libudev-monitor.c b/udev/lib/libudev-monitor.c
index b9c2f8d..8d78d31 100644
--- a/udev/lib/libudev-monitor.c
+++ b/udev/lib/libudev-monitor.c
@@ -67,10 +67,9 @@ struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char
 		return NULL;
 	if (socket_path = NULL)
 		return NULL;
-	udev_monitor = malloc(sizeof(struct udev_monitor));
+	udev_monitor = calloc(1, sizeof(struct udev_monitor));
 	if (udev_monitor = NULL)
 		return NULL;
-	memset(udev_monitor, 0x00, sizeof(struct udev_monitor));
 	udev_monitor->refcount = 1;
 	udev_monitor->udev = udev;
 
@@ -105,10 +104,9 @@ struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev)
 
 	if (udev = NULL)
 		return NULL;
-	udev_monitor = malloc(sizeof(struct udev_monitor));
+	udev_monitor = calloc(1, sizeof(struct udev_monitor));
 	if (udev_monitor = NULL)
 		return NULL;
-	memset(udev_monitor, 0x00, sizeof(struct udev_monitor));
 	udev_monitor->refcount = 1;
 	udev_monitor->udev = udev;
 
diff --git a/udev/lib/libudev-queue.c b/udev/lib/libudev-queue.c
index 60f7209..bbd0641 100644
--- a/udev/lib/libudev-queue.c
+++ b/udev/lib/libudev-queue.c
@@ -45,10 +45,9 @@ struct udev_queue *udev_queue_new(struct udev *udev)
 	if (udev = NULL)
 		return NULL;
 
-	udev_queue = malloc(sizeof(struct udev_queue));
+	udev_queue = calloc(1, sizeof(struct udev_queue));
 	if (udev_queue = NULL)
 		return NULL;
-	memset(udev_queue, 0x00, sizeof(struct udev_queue));
 	udev_queue->refcount = 1;
 	udev_queue->udev = udev;
 	udev_list_init(&udev_queue->queue_list);
diff --git a/udev/lib/libudev.c b/udev/lib/libudev.c
index 511054a..9cf23c5 100644
--- a/udev/lib/libudev.c
+++ b/udev/lib/libudev.c
@@ -96,10 +96,9 @@ struct udev *udev_new(void)
 	char *config_file;
 	FILE *f;
 
-	udev = malloc(sizeof(struct udev));
+	udev = calloc(1, sizeof(struct udev));
 	if (udev = NULL)
 		return NULL;
-	memset(udev, 0x00, (sizeof(struct udev)));
 	udev->refcount = 1;
 	udev->log_fn = log_stderr;
 	udev->log_priority = LOG_ERR;
diff --git a/udev/udev-event.c b/udev/udev-event.c
index 2559ff7..c8342f5 100644
--- a/udev/udev-event.c
+++ b/udev/udev-event.c
@@ -34,10 +34,9 @@ struct udev_event *udev_event_new(struct udev_device *dev)
 {
 	struct udev_event *event;
 
-	event = malloc(sizeof(struct udev_event));
+	event = calloc(1, sizeof(struct udev_event));
 	if (event = NULL)
 		return NULL;
-	memset(event, 0x00, sizeof(struct udev_event));
 
 	event->dev = dev;
 	event->udev = udev_device_get_udev(dev);
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
index b8aa8ad..07c410d 100644
--- a/udev/udev-rules.c
+++ b/udev/udev-rules.c
@@ -2221,10 +2221,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
 	struct udev_list_node file_list;
 	struct udev_list_entry *file_loop, *file_tmp;
 
-	rules = malloc(sizeof(struct udev_rules));
+	rules = calloc(1, sizeof(struct udev_rules));
 	if (rules = NULL)
 		return rules;
-	memset(rules, 0x00, sizeof(struct udev_rules));
 	rules->udev = udev;
 	rules->resolve_names = resolve_names;
 	udev_list_init(&file_list);



             reply	other threads:[~2008-10-21 10:10 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-21 10:10 Alan Jenkins [this message]
2008-10-21 11:11 ` [PATCH] Use more appropriate alternatives to malloc() Kay Sievers

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=48FDAA98.8030309@tuffmail.co.uk \
    --to=alan-jenkins@tuffmail.co.uk \
    --cc=linux-hotplug@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.