lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <6b4e42d10608262130q58ff896ia3fe5ce10ad28ff8@mail.gmail.com>
Date:	Sat, 26 Aug 2006 21:30:38 -0700
From:	"Om Narasimhan" <om.turyx@...il.com>
To:	"Len Brown" <lenb@...nel.org>
Cc:	linux-kernel@...r.kernel.org, kernel-janitors@...ts.osdl.org
Subject: Re: memory leak fix in acpi_memhotplug.c, kmalloc to kzalloc conversion.

On 8/26/06, Om Narasimhan <om.turyx@...il.com> wrote:
> On 8/26/06, Len Brown <len.brown@...el.com> wrote:
> > On Saturday 26 August 2006 20:21, Om Narasimhan wrote:
> > > Hi,
> > > This patch fixes one memory leak in drivers/acpi/acpi_memhotplug.c
> > > Replaces all kmalloc() calls succeeded by memset() to kzalloc() calls.
> > > Applies cleanly to 2.6.18-rc4. Compile tested.
> >
> > Compile testing is more effective is you use a .config that
> > builds each of the source files changed.
> I have compiled it with .config files resulting from targets
> 'allmodconfig' and 'allyesconfig'.

> > What tree is this patch against?
> > This line is already present (above the comment) in 2.6.18-rc4.
> This surprises me. This patch is against 2.6.18-rc4, git-pull -ed today morning.
> Maybe I should do one more git-pull?

It was my mistake. I, by mistake added one line extra.
The corrected patch is here.
It is against 2.6.18-rc4, applies cleanly and compile tested with
target 'allyesconfig'
Thanks,
Om. N.

 drivers/acpi/ac.c              |    4 +---
 drivers/acpi/acpi_memhotplug.c |   14 ++++----------
 drivers/acpi/asus_acpi.c       |    3 +--
 drivers/acpi/battery.c         |   13 +++----------
 drivers/acpi/bus.c             |    3 +--
 drivers/acpi/button.c          |    4 +---
 drivers/acpi/container.c       |    4 +---
 drivers/acpi/ec.c              |   20 +++++---------------
 drivers/acpi/fan.c             |    3 +--
 drivers/acpi/i2c_ec.c          |    8 ++------
 drivers/acpi/osl.c             |    2 +-
 drivers/acpi/pci_bind.c        |   21 +++++----------------
 drivers/acpi/pci_irq.c         |   16 +++-------------
 drivers/acpi/pci_link.c        |    6 ++----
 drivers/acpi/pci_root.c        |    3 +--
 drivers/acpi/power.c           |    4 +---
 drivers/acpi/processor_core.c  |    4 +---
 drivers/acpi/sbs.c             |    4 +---
 drivers/acpi/thermal.c         |   13 +++----------
 drivers/acpi/utils.c           |    4 +---
 20 files changed, 39 insertions(+), 114 deletions(-)

diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
index 96309b9..72738a5 100644
--- a/drivers/acpi/ac.c
+++ b/drivers/acpi/ac.c
@@ -221,11 +221,9 @@ static int acpi_ac_add(struct acpi_devic
 	if (!device)
 		return -EINVAL;

-	ac = kmalloc(sizeof(struct acpi_ac), GFP_KERNEL);
+	ac = kzalloc(sizeof(struct acpi_ac), GFP_KERNEL);
 	if (!ac)
 		return -ENOMEM;
-	memset(ac, 0, sizeof(struct acpi_ac));
-
 	ac->device = device;
 	strcpy(acpi_device_name(device), ACPI_AC_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_AC_CLASS);
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
index b0d4b14..59fd754 100644
--- a/drivers/acpi/acpi_memhotplug.c
+++ b/drivers/acpi/acpi_memhotplug.c
@@ -292,7 +292,6 @@ static int acpi_memory_disable_device(st
 	int result;
 	struct acpi_memory_info *info, *n;

-
 	/*
 	 * Ask the VM to offline this memory range.
 	 * Note: Assume that this function returns zero on success
@@ -323,7 +322,6 @@ static void acpi_memory_device_notify(ac
 	struct acpi_memory_device *mem_device;
 	struct acpi_device *device;

-
 	switch (event) {
 	case ACPI_NOTIFY_BUS_CHECK:
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
@@ -376,7 +374,6 @@ static void acpi_memory_device_notify(ac
 				  "Unsupported event [0x%x]\n", event));
 		break;
 	}
-
 	return;
 }

@@ -385,15 +382,12 @@ static int acpi_memory_device_add(struct
 	int result;
 	struct acpi_memory_device *mem_device = NULL;

-
 	if (!device)
 		return -EINVAL;

-	mem_device = kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL);
+	mem_device = kzalloc(sizeof(struct acpi_memory_device), GFP_KERNEL);
 	if (!mem_device)
 		return -ENOMEM;
-	memset(mem_device, 0, sizeof(struct acpi_memory_device));
-
 	INIT_LIST_HEAD(&mem_device->res_list);
 	mem_device->device = device;
 	sprintf(acpi_device_name(device), "%s", ACPI_MEMORY_DEVICE_NAME);
@@ -418,14 +412,14 @@ static int acpi_memory_device_add(struct
 static int acpi_memory_device_remove(struct acpi_device *device, int type)
 {
 	struct acpi_memory_device *mem_device = NULL;
-
+	struct acpi_memory_info *info, *n;

 	if (!device || !acpi_driver_data(device))
 		return -EINVAL;
-
 	mem_device = (struct acpi_memory_device *)acpi_driver_data(device);
+	list_for_each_entry_safe(info, n, &mem_device->res_list, list)
+		kfree(info);
 	kfree(mem_device);
-
 	return 0;
 }

diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c
index e9ee4c5..937d9a4 100644
--- a/drivers/acpi/asus_acpi.c
+++ b/drivers/acpi/asus_acpi.c
@@ -1246,10 +1246,9 @@ static int asus_hotk_add(struct acpi_dev
 	       ASUS_ACPI_VERSION);

 	hotk =
-	    (struct asus_hotk *)kmalloc(sizeof(struct asus_hotk), GFP_KERNEL);
+	    (struct asus_hotk *)kzalloc(sizeof(struct asus_hotk), GFP_KERNEL);
 	if (!hotk)
 		return -ENOMEM;
-	memset(hotk, 0, sizeof(struct asus_hotk));

 	hotk->handle = device->handle;
 	strcpy(acpi_device_name(device), ACPI_HOTK_DEVICE_NAME);
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index 6e52217..8c0a02c 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -158,13 +158,11 @@ acpi_battery_get_info(struct acpi_batter
 		goto end;
 	}

-	data.pointer = kmalloc(data.length, GFP_KERNEL);
+	data.pointer = kzalloc(data.length, GFP_KERNEL);
 	if (!data.pointer) {
 		result = -ENOMEM;
 		goto end;
 	}
-	memset(data.pointer, 0, data.length);
-
 	status = acpi_extract_package(package, &format, &data);
 	if (ACPI_FAILURE(status)) {
 		ACPI_EXCEPTION((AE_INFO, status, "Extracting _BIF"));
@@ -218,13 +216,11 @@ acpi_battery_get_status(struct acpi_batt
 		goto end;
 	}

-	data.pointer = kmalloc(data.length, GFP_KERNEL);
+	data.pointer = kzalloc(data.length, GFP_KERNEL);
 	if (!data.pointer) {
 		result = -ENOMEM;
 		goto end;
 	}
-	memset(data.pointer, 0, data.length);
-
 	status = acpi_extract_package(package, &format, &data);
 	if (ACPI_FAILURE(status)) {
 		ACPI_EXCEPTION((AE_INFO, status, "Extracting _BST"));
@@ -692,11 +688,9 @@ static int acpi_battery_add(struct acpi_
 	if (!device)
 		return -EINVAL;

-	battery = kmalloc(sizeof(struct acpi_battery), GFP_KERNEL);
+	battery = kzalloc(sizeof(struct acpi_battery), GFP_KERNEL);
 	if (!battery)
 		return -ENOMEM;
-	memset(battery, 0, sizeof(struct acpi_battery));
-
 	battery->device = device;
 	strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS);
@@ -727,7 +721,6 @@ static int acpi_battery_add(struct acpi_
 		acpi_battery_remove_fs(device);
 		kfree(battery);
 	}
-
 	return result;
 }

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index b297769..24b9133 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -288,7 +288,6 @@ int acpi_bus_generate_event(struct acpi_
 	struct acpi_bus_event *event = NULL;
 	unsigned long flags = 0;

-
 	if (!device)
 		return -EINVAL;

@@ -296,7 +295,7 @@ int acpi_bus_generate_event(struct acpi_
 	if (!event_is_open)
 		return 0;

-	event = kmalloc(sizeof(struct acpi_bus_event), GFP_ATOMIC);
+	event = kzalloc(sizeof(struct acpi_bus_event), GFP_ATOMIC);
 	if (!event)
 		return -ENOMEM;

diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index 5ef885e..bec7520 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -296,11 +296,9 @@ static int acpi_button_add(struct acpi_d
 	if (!device)
 		return -EINVAL;

-	button = kmalloc(sizeof(struct acpi_button), GFP_KERNEL);
+	button = kzalloc(sizeof(struct acpi_button), GFP_KERNEL);
 	if (!button)
 		return -ENOMEM;
-	memset(button, 0, sizeof(struct acpi_button));
-
 	button->device = device;
 	acpi_driver_data(device) = button;

diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c
index 871aa52..322d60e 100644
--- a/drivers/acpi/container.c
+++ b/drivers/acpi/container.c
@@ -96,11 +96,9 @@ static int acpi_container_add(struct acp
 		return -EINVAL;
 	}

-	container = kmalloc(sizeof(struct acpi_container), GFP_KERNEL);
+	container = kzalloc(sizeof(struct acpi_container), GFP_KERNEL);
 	if (!container)
 		return -ENOMEM;
-
-	memset(container, 0, sizeof(struct acpi_container));
 	container->handle = device->handle;
 	strcpy(acpi_device_name(device), ACPI_CONTAINER_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_CONTAINER_CLASS);
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index e5d7963..6c24b62 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -988,11 +988,9 @@ static int acpi_ec_poll_add(struct acpi_
 	if (!device)
 		return -EINVAL;

-	ec = kmalloc(sizeof(union acpi_ec), GFP_KERNEL);
+	ec = kzalloc(sizeof(union acpi_ec), GFP_KERNEL);
 	if (!ec)
 		return -ENOMEM;
-	memset(ec, 0, sizeof(union acpi_ec));
-
 	ec->common.handle = device->handle;
 	ec->common.uid = -1;
 	init_MUTEX(&ec->poll.sem);
@@ -1055,11 +1053,9 @@ static int acpi_ec_intr_add(struct acpi_
 	if (!device)
 		return -EINVAL;

-	ec = kmalloc(sizeof(union acpi_ec), GFP_KERNEL);
+	ec = kzalloc(sizeof(union acpi_ec), GFP_KERNEL);
 	if (!ec)
 		return -ENOMEM;
-	memset(ec, 0, sizeof(union acpi_ec));
-
 	ec->common.handle = device->handle;
 	ec->common.uid = -1;
 	atomic_set(&ec->intr.pending_gpe, 0);
@@ -1342,13 +1338,11 @@ static int __init acpi_ec_fake_ecdt(void

 	printk(KERN_INFO PREFIX "Try to make an fake ECDT\n");

-	ec_ecdt = kmalloc(sizeof(union acpi_ec), GFP_KERNEL);
+	ec_ecdt = kzalloc(sizeof(union acpi_ec), GFP_KERNEL);
 	if (!ec_ecdt) {
 		ret = -ENOMEM;
 		goto error;
 	}
-	memset(ec_ecdt, 0, sizeof(union acpi_ec));
-
 	status = acpi_get_devices(ACPI_EC_HID,
 				  acpi_fake_ecdt_callback, NULL, NULL);
 	if (ACPI_FAILURE(status)) {
@@ -1387,11 +1381,9 @@ static int __init acpi_ec_poll_get_real_
 	/*
 	 * Generate a temporary ec context to use until the namespace is scanned
 	 */
-	ec_ecdt = kmalloc(sizeof(union acpi_ec), GFP_KERNEL);
+	ec_ecdt = kzalloc(sizeof(union acpi_ec), GFP_KERNEL);
 	if (!ec_ecdt)
 		return -ENOMEM;
-	memset(ec_ecdt, 0, sizeof(union acpi_ec));
-
 	ec_ecdt->common.command_addr = ecdt_ptr->ec_control;
 	ec_ecdt->common.status_addr = ecdt_ptr->ec_control;
 	ec_ecdt->common.data_addr = ecdt_ptr->ec_data;
@@ -1432,11 +1424,9 @@ static int __init acpi_ec_intr_get_real_
 	/*
 	 * Generate a temporary ec context to use until the namespace is scanned
 	 */
-	ec_ecdt = kmalloc(sizeof(union acpi_ec), GFP_KERNEL);
+	ec_ecdt = kzalloc(sizeof(union acpi_ec), GFP_KERNEL);
 	if (!ec_ecdt)
 		return -ENOMEM;
-	memset(ec_ecdt, 0, sizeof(union acpi_ec));
-
 	init_MUTEX(&ec_ecdt->intr.sem);
 	init_waitqueue_head(&ec_ecdt->intr.wait);
 	ec_ecdt->common.command_addr = ecdt_ptr->ec_control;
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
index 045c894..9e73c98 100644
--- a/drivers/acpi/fan.c
+++ b/drivers/acpi/fan.c
@@ -186,10 +186,9 @@ static int acpi_fan_add(struct acpi_devi
 	if (!device)
 		return -EINVAL;

-	fan = kmalloc(sizeof(struct acpi_fan), GFP_KERNEL);
+	fan = kzalloc(sizeof(struct acpi_fan), GFP_KERNEL);
 	if (!fan)
 		return -ENOMEM;
-	memset(fan, 0, sizeof(struct acpi_fan));

 	fan->device = device;
 	strcpy(acpi_device_name(device), "Fan");
diff --git a/drivers/acpi/i2c_ec.c b/drivers/acpi/i2c_ec.c
index 84239d5..6b50de8 100644
--- a/drivers/acpi/i2c_ec.c
+++ b/drivers/acpi/i2c_ec.c
@@ -309,19 +309,15 @@ static int acpi_ec_hc_add(struct acpi_de
 		return -EINVAL;
 	}

-	ec_hc = kmalloc(sizeof(struct acpi_ec_hc), GFP_KERNEL);
+	ec_hc = kzalloc(sizeof(struct acpi_ec_hc), GFP_KERNEL);
 	if (!ec_hc) {
 		return -ENOMEM;
 	}
-	memset(ec_hc, 0, sizeof(struct acpi_ec_hc));
-
-	smbus = kmalloc(sizeof(struct acpi_ec_smbus), GFP_KERNEL);
+	smbus = kzalloc(sizeof(struct acpi_ec_smbus), GFP_KERNEL);
 	if (!smbus) {
 		kfree(ec_hc);
 		return -ENOMEM;
 	}
-	memset(smbus, 0, sizeof(struct acpi_ec_smbus));
-
 	ec_hc->handle = device->handle;
 	strcpy(acpi_device_name(device), ACPI_EC_HC_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_EC_HC_CLASS);
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index b7d1514..ee986de 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -625,7 +625,7 @@ acpi_status acpi_os_execute(acpi_execute
 	 */

 	dpc =
-	    kmalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct),
+	    kzalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct),
 		    GFP_ATOMIC);
 	if (!dpc)
 		return_ACPI_STATUS(AE_NO_MEMORY);
diff --git a/drivers/acpi/pci_bind.c b/drivers/acpi/pci_bind.c
index 1e2ae6e..ec55b3b 100644
--- a/drivers/acpi/pci_bind.c
+++ b/drivers/acpi/pci_bind.c
@@ -122,20 +122,17 @@ int acpi_pci_bind(struct acpi_device *de
 	if (!device || !device->parent)
 		return -EINVAL;

-	pathname = kmalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
+	pathname = kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
 	if (!pathname)
 		return -ENOMEM;
-	memset(pathname, 0, ACPI_PATHNAME_MAX);
 	buffer.length = ACPI_PATHNAME_MAX;
 	buffer.pointer = pathname;

-	data = kmalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
+	data = kzalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
 	if (!data) {
 		kfree(pathname);
 		return -ENOMEM;
 	}
-	memset(data, 0, sizeof(struct acpi_pci_data));
-
 	acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
 	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Binding PCI device [%s]...\n",
 			  pathname));
@@ -277,15 +274,12 @@ int acpi_pci_unbind(struct acpi_device *
 	char *pathname = NULL;
 	struct acpi_buffer buffer = { 0, NULL };

-
 	if (!device || !device->parent)
 		return -EINVAL;

-	pathname = (char *)kmalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
+	pathname = (char *)kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
 	if (!pathname)
 		return -ENOMEM;
-	memset(pathname, 0, ACPI_PATHNAME_MAX);
-
 	buffer.length = ACPI_PATHNAME_MAX;
 	buffer.pointer = pathname;
 	acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
@@ -332,11 +326,9 @@ acpi_pci_bind_root(struct acpi_device *d
 	struct acpi_buffer buffer = { 0, NULL };


-	pathname = (char *)kmalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
+	pathname = (char *)kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
 	if (!pathname)
 		return -ENOMEM;
-	memset(pathname, 0, ACPI_PATHNAME_MAX);
-
 	buffer.length = ACPI_PATHNAME_MAX;
 	buffer.pointer = pathname;

@@ -345,13 +337,11 @@ acpi_pci_bind_root(struct acpi_device *d
 		return -EINVAL;
 	}

-	data = kmalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
+	data = kzalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
 	if (!data) {
 		kfree(pathname);
 		return -ENOMEM;
 	}
-	memset(data, 0, sizeof(struct acpi_pci_data));
-
 	data->id = *id;
 	data->bus = bus;
 	device->ops.bind = acpi_pci_bind;
@@ -375,6 +365,5 @@ acpi_pci_bind_root(struct acpi_device *d
 	kfree(pathname);
 	if (result != 0)
 		kfree(data);
-
 	return result;
 }
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index feda034..b64c50a 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -85,21 +85,14 @@ acpi_pci_irq_add_entry(acpi_handle handl
 {
 	struct acpi_prt_entry *entry = NULL;

-
-	if (!prt)
-		return -EINVAL;
-
-	entry = kmalloc(sizeof(struct acpi_prt_entry), GFP_KERNEL);
+	entry = kzalloc(sizeof(struct acpi_prt_entry), GFP_KERNEL);
 	if (!entry)
 		return -ENOMEM;
-	memset(entry, 0, sizeof(struct acpi_prt_entry));
-
 	entry->id.segment = segment;
 	entry->id.bus = bus;
 	entry->id.device = (prt->address >> 16) & 0xFFFF;
 	entry->id.function = prt->address & 0xFFFF;
 	entry->pin = prt->pin;
-
 	/*
 	 * Type 1: Dynamic
 	 * ---------------
@@ -161,11 +154,9 @@ int acpi_pci_irq_add_prt(acpi_handle han
 	static int first_time = 1;


-	pathname = (char *)kmalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
+	pathname = (char *)kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
 	if (!pathname)
 		return -ENOMEM;
-	memset(pathname, 0, ACPI_PATHNAME_MAX);
-
 	if (first_time) {
 		acpi_prt.count = 0;
 		INIT_LIST_HEAD(&acpi_prt.entries);
@@ -198,11 +189,10 @@ int acpi_pci_irq_add_prt(acpi_handle han
 		return -ENODEV;
 	}

-	prt = kmalloc(buffer.length, GFP_KERNEL);
+	prt = kzalloc(buffer.length, GFP_KERNEL);
 	if (!prt) {
 		return -ENOMEM;
 	}
-	memset(prt, 0, buffer.length);
 	buffer.pointer = prt;

 	status = acpi_get_irq_routing_table(handle, &buffer);
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 7f3e7e7..a67af5d 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -307,11 +307,10 @@ static int acpi_pci_link_set(struct acpi
 	if (!link || !irq)
 		return -EINVAL;

-	resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC);
+	resource = kzalloc(sizeof(*resource) + 1, GFP_ATOMIC);
 	if (!resource)
 		return -ENOMEM;

-	memset(resource, 0, sizeof(*resource) + 1);
 	buffer.length = sizeof(*resource) + 1;
 	buffer.pointer = resource;

@@ -718,10 +717,9 @@ static int acpi_pci_link_add(struct acpi
 	if (!device)
 		return -EINVAL;

-	link = kmalloc(sizeof(struct acpi_pci_link), GFP_KERNEL);
+	link = kzalloc(sizeof(struct acpi_pci_link), GFP_KERNEL);
 	if (!link)
 		return -ENOMEM;
-	memset(link, 0, sizeof(struct acpi_pci_link));

 	link->device = device;
 	strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 0984a1e..6b55f43 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -164,10 +164,9 @@ static int acpi_pci_root_add(struct acpi
 	if (!device)
 		return -EINVAL;

-	root = kmalloc(sizeof(struct acpi_pci_root), GFP_KERNEL);
+	root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL);
 	if (!root)
 		return -ENOMEM;
-	memset(root, 0, sizeof(struct acpi_pci_root));
 	INIT_LIST_HEAD(&root->node);

 	root->device = device;
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index fec225d..b73d9c3 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -535,11 +535,9 @@ static int acpi_power_add(struct acpi_de
 	if (!device)
 		return -EINVAL;

-	resource = kmalloc(sizeof(struct acpi_power_resource), GFP_KERNEL);
+	resource = kzalloc(sizeof(struct acpi_power_resource), GFP_KERNEL);
 	if (!resource)
 		return -ENOMEM;
-	memset(resource, 0, sizeof(struct acpi_power_resource));
-
 	resource->device = device;
 	strcpy(resource->name, device->pnp.bus_id);
 	strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME);
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index b13d644..e3943f4 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -615,11 +615,9 @@ static int acpi_processor_add(struct acp
 	if (!device)
 		return -EINVAL;

-	pr = kmalloc(sizeof(struct acpi_processor), GFP_KERNEL);
+	pr = kzalloc(sizeof(struct acpi_processor), GFP_KERNEL);
 	if (!pr)
 		return -ENOMEM;
-	memset(pr, 0, sizeof(struct acpi_processor));
-
 	pr->handle = device->handle;
 	strcpy(acpi_device_name(device), ACPI_PROCESSOR_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_PROCESSOR_CLASS);
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
index db7b350..2819d54 100644
--- a/drivers/acpi/sbs.c
+++ b/drivers/acpi/sbs.c
@@ -1576,13 +1576,11 @@ static int acpi_sbs_add(struct acpi_devi
 	int id, cnt;
 	acpi_status status = AE_OK;

-	sbs = kmalloc(sizeof(struct acpi_sbs), GFP_KERNEL);
+	sbs = kzalloc(sizeof(struct acpi_sbs), GFP_KERNEL);
 	if (!sbs) {
 		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "kmalloc() failed\n"));
 		return -ENOMEM;
 	}
-	memset(sbs, 0, sizeof(struct acpi_sbs));
-
 	cnt = 0;
 	while (cnt < 10) {
 		cnt++;
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 5753d06..bdb0353 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -902,13 +902,11 @@ acpi_thermal_write_trip_points(struct fi
 	int i = 0;


-	limit_string = kmalloc(ACPI_THERMAL_MAX_LIMIT_STR_LEN, GFP_KERNEL);
+	limit_string = kzalloc(ACPI_THERMAL_MAX_LIMIT_STR_LEN, GFP_KERNEL);
 	if (!limit_string)
 		return -ENOMEM;

-	memset(limit_string, 0, ACPI_THERMAL_MAX_LIMIT_STR_LEN);
-
-	active = kmalloc(ACPI_THERMAL_MAX_ACTIVE * sizeof(int), GFP_KERNEL);
+	active = kzalloc(ACPI_THERMAL_MAX_ACTIVE * sizeof(int), GFP_KERNEL);
 	if (!active) {
 		kfree(limit_string);
 		return -ENOMEM;
@@ -923,9 +921,6 @@ acpi_thermal_write_trip_points(struct fi
 		count = -EFAULT;
 		goto end;
 	}
-
-	limit_string[count] = '\0';
-
 	num = sscanf(limit_string, "%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d",
 		     &critical, &hot, &passive,
 		     &active[0], &active[1], &active[2], &active[3], &active[4],
@@ -1271,11 +1266,9 @@ static int acpi_thermal_add(struct acpi_
 	if (!device)
 		return -EINVAL;

-	tz = kmalloc(sizeof(struct acpi_thermal), GFP_KERNEL);
+	tz = kzalloc(sizeof(struct acpi_thermal), GFP_KERNEL);
 	if (!tz)
 		return -ENOMEM;
-	memset(tz, 0, sizeof(struct acpi_thermal));
-
 	tz->device = device;
 	strcpy(tz->name, device->pnp.bus_id);
 	strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME);
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index f48227f..1778340 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -262,11 +262,9 @@ acpi_evaluate_integer(acpi_handle handle
 	if (!data)
 		return AE_BAD_PARAMETER;

-	element = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
+	element = kzalloc(sizeof(union acpi_object), GFP_KERNEL);
 	if (!element)
 		return AE_NO_MEMORY;
-
-	memset(element, 0, sizeof(union acpi_object));
 	buffer.length = sizeof(union acpi_object);
 	buffer.pointer = element;
 	status = acpi_evaluate_object(handle, pathname, arguments, &buffer);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ