Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2822e7f authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Linus Torvalds
Browse files

[PATCH] pnp: consolidate kmalloc wrappers



ISAPNP, PNPBIOS, and PNPACPI all had their own kmalloc wrappers that
reimplemented kcalloc().  Remove the wrappers and just use kcalloc()
directly.

Note that this also removes the PNPBIOS error message when the kmalloc
fails.

Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ea2f1590
Loading
Loading
Loading
Loading
+11 −22
Original line number Original line Diff line number Diff line
@@ -142,17 +142,6 @@ static void isapnp_write_word(unsigned char idx, unsigned short val)
	isapnp_write_byte(idx+1, val);
	isapnp_write_byte(idx+1, val);
}
}


static void *isapnp_alloc(long size)
{
	void *result;

	result = kmalloc(size, GFP_KERNEL);
	if (!result)
		return NULL;
	memset(result, 0, size);
	return result;
}

static void isapnp_key(void)
static void isapnp_key(void)
{
{
	unsigned char code = 0x6a, msb;
	unsigned char code = 0x6a, msb;
@@ -406,7 +395,7 @@ static void isapnp_parse_id(struct pnp_dev * dev, unsigned short vendor, unsigne
	struct pnp_id * id;
	struct pnp_id * id;
	if (!dev)
	if (!dev)
		return;
		return;
	id = isapnp_alloc(sizeof(struct pnp_id));
	id = kcalloc(1, sizeof(struct pnp_id), GFP_KERNEL);
	if (!id)
	if (!id)
		return;
		return;
	sprintf(id->id, "%c%c%c%x%x%x%x",
	sprintf(id->id, "%c%c%c%x%x%x%x",
@@ -430,7 +419,7 @@ static struct pnp_dev * __init isapnp_parse_device(struct pnp_card *card, int si
	struct pnp_dev *dev;
	struct pnp_dev *dev;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	dev = isapnp_alloc(sizeof(struct pnp_dev));
	dev = kcalloc(1, sizeof(struct pnp_dev), GFP_KERNEL);
	if (!dev)
	if (!dev)
		return NULL;
		return NULL;
	dev->number = number;
	dev->number = number;
@@ -461,7 +450,7 @@ static void __init isapnp_parse_irq_resource(struct pnp_option *option,
	unsigned long bits;
	unsigned long bits;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	irq = isapnp_alloc(sizeof(struct pnp_irq));
	irq = kcalloc(1, sizeof(struct pnp_irq), GFP_KERNEL);
	if (!irq)
	if (!irq)
		return;
		return;
	bits = (tmp[1] << 8) | tmp[0];
	bits = (tmp[1] << 8) | tmp[0];
@@ -485,7 +474,7 @@ static void __init isapnp_parse_dma_resource(struct pnp_option *option,
	struct pnp_dma *dma;
	struct pnp_dma *dma;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	dma = isapnp_alloc(sizeof(struct pnp_dma));
	dma = kcalloc(1, sizeof(struct pnp_dma), GFP_KERNEL);
	if (!dma)
	if (!dma)
		return;
		return;
	dma->map = tmp[0];
	dma->map = tmp[0];
@@ -505,7 +494,7 @@ static void __init isapnp_parse_port_resource(struct pnp_option *option,
	struct pnp_port *port;
	struct pnp_port *port;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	port = isapnp_alloc(sizeof(struct pnp_port));
	port = kcalloc(1, sizeof(struct pnp_port), GFP_KERNEL);
	if (!port)
	if (!port)
		return;
		return;
	port->min = (tmp[2] << 8) | tmp[1];
	port->min = (tmp[2] << 8) | tmp[1];
@@ -528,7 +517,7 @@ static void __init isapnp_parse_fixed_port_resource(struct pnp_option *option,
	struct pnp_port *port;
	struct pnp_port *port;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	port = isapnp_alloc(sizeof(struct pnp_port));
	port = kcalloc(1, sizeof(struct pnp_port), GFP_KERNEL);
	if (!port)
	if (!port)
		return;
		return;
	port->min = port->max = (tmp[1] << 8) | tmp[0];
	port->min = port->max = (tmp[1] << 8) | tmp[0];
@@ -550,7 +539,7 @@ static void __init isapnp_parse_mem_resource(struct pnp_option *option,
	struct pnp_mem *mem;
	struct pnp_mem *mem;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	mem = isapnp_alloc(sizeof(struct pnp_mem));
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = ((tmp[2] << 8) | tmp[1]) << 8;
	mem->min = ((tmp[2] << 8) | tmp[1]) << 8;
@@ -573,7 +562,7 @@ static void __init isapnp_parse_mem32_resource(struct pnp_option *option,
	struct pnp_mem *mem;
	struct pnp_mem *mem;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	mem = isapnp_alloc(sizeof(struct pnp_mem));
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1];
	mem->min = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1];
@@ -595,7 +584,7 @@ static void __init isapnp_parse_fixed_mem32_resource(struct pnp_option *option,
	struct pnp_mem *mem;
	struct pnp_mem *mem;


	isapnp_peek(tmp, size);
	isapnp_peek(tmp, size);
	mem = isapnp_alloc(sizeof(struct pnp_mem));
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = mem->max = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1];
	mem->min = mem->max = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1];
@@ -838,7 +827,7 @@ static unsigned char __init isapnp_checksum(unsigned char *data)


static void isapnp_parse_card_id(struct pnp_card * card, unsigned short vendor, unsigned short device)
static void isapnp_parse_card_id(struct pnp_card * card, unsigned short vendor, unsigned short device)
{
{
	struct pnp_id * id = isapnp_alloc(sizeof(struct pnp_id));
	struct pnp_id * id = kcalloc(1, sizeof(struct pnp_id), GFP_KERNEL);
	if (!id)
	if (!id)
		return;
		return;
	sprintf(id->id, "%c%c%c%x%x%x%x",
	sprintf(id->id, "%c%c%c%x%x%x%x",
@@ -874,7 +863,7 @@ static int __init isapnp_build_device_list(void)
			header[4], header[5], header[6], header[7], header[8]);
			header[4], header[5], header[6], header[7], header[8]);
		printk(KERN_DEBUG "checksum = 0x%x\n", checksum);
		printk(KERN_DEBUG "checksum = 0x%x\n", checksum);
#endif
#endif
		if ((card = isapnp_alloc(sizeof(struct pnp_card))) == NULL)
		if ((card = kcalloc(1, sizeof(struct pnp_card), GFP_KERNEL)) == NULL)
			continue;
			continue;


		card->number = csn;
		card->number = csn;
+3 −12
Original line number Original line Diff line number Diff line
@@ -41,14 +41,6 @@ static inline int is_exclusive_device(struct acpi_device *dev)
	return (!acpi_match_ids(dev, excluded_id_list));
	return (!acpi_match_ids(dev, excluded_id_list));
}
}


void *pnpacpi_kmalloc(size_t size, int f)
{
	void *p = kmalloc(size, f);
	if (p)
		memset(p, 0, size);
	return p;
}

/*
/*
 * Compatible Device IDs
 * Compatible Device IDs
 */
 */
@@ -143,7 +135,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
		return 0;
		return 0;


	pnp_dbg("ACPI device : hid %s", acpi_device_hid(device));
	pnp_dbg("ACPI device : hid %s", acpi_device_hid(device));
	dev =  pnpacpi_kmalloc(sizeof(struct pnp_dev), GFP_KERNEL);
	dev =  kcalloc(1, sizeof(struct pnp_dev), GFP_KERNEL);
	if (!dev) {
	if (!dev) {
		pnp_err("Out of memory");
		pnp_err("Out of memory");
		return -ENOMEM;
		return -ENOMEM;
@@ -173,7 +165,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
	dev->number = num;
	dev->number = num;
	
	
	/* set the initial values for the PnP device */
	/* set the initial values for the PnP device */
	dev_id = pnpacpi_kmalloc(sizeof(struct pnp_id), GFP_KERNEL);
	dev_id = kcalloc(1, sizeof(struct pnp_id), GFP_KERNEL);
	if (!dev_id)
	if (!dev_id)
		goto err;
		goto err;
	pnpidacpi_to_pnpid(acpi_device_hid(device), dev_id->id);
	pnpidacpi_to_pnpid(acpi_device_hid(device), dev_id->id);
@@ -205,8 +197,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
		for (i = 0; i < cid_list->count; i++) {
		for (i = 0; i < cid_list->count; i++) {
			if (!ispnpidacpi(cid_list->id[i].value))
			if (!ispnpidacpi(cid_list->id[i].value))
				continue;
				continue;
			dev_id = pnpacpi_kmalloc(sizeof(struct pnp_id), 
			dev_id = kcalloc(1, sizeof(struct pnp_id), GFP_KERNEL);
				GFP_KERNEL);
			if (!dev_id)
			if (!dev_id)
				continue;
				continue;


+0 −1
Original line number Original line Diff line number Diff line
@@ -5,7 +5,6 @@
#include <linux/acpi.h>
#include <linux/acpi.h>
#include <linux/pnp.h>
#include <linux/pnp.h>


void *pnpacpi_kmalloc(size_t size, int f);
acpi_status pnpacpi_parse_allocated_resource(acpi_handle, struct pnp_resource_table*);
acpi_status pnpacpi_parse_allocated_resource(acpi_handle, struct pnp_resource_table*);
acpi_status pnpacpi_parse_resource_option_data(acpi_handle, struct pnp_dev*);
acpi_status pnpacpi_parse_resource_option_data(acpi_handle, struct pnp_dev*);
int pnpacpi_encode_resources(struct pnp_resource_table *, struct acpi_buffer *);
int pnpacpi_encode_resources(struct pnp_resource_table *, struct acpi_buffer *);
+9 −9
Original line number Original line Diff line number Diff line
@@ -244,7 +244,7 @@ static void pnpacpi_parse_dma_option(struct pnp_option *option, struct acpi_reso


	if (p->number_of_channels == 0)
	if (p->number_of_channels == 0)
		return;
		return;
	dma = pnpacpi_kmalloc(sizeof(struct pnp_dma), GFP_KERNEL);
	dma = kcalloc(1, sizeof(struct pnp_dma), GFP_KERNEL);
	if (!dma)
	if (!dma)
		return;
		return;


@@ -300,7 +300,7 @@ static void pnpacpi_parse_irq_option(struct pnp_option *option,
	
	
	if (p->number_of_interrupts == 0)
	if (p->number_of_interrupts == 0)
		return;
		return;
	irq = pnpacpi_kmalloc(sizeof(struct pnp_irq), GFP_KERNEL);
	irq = kcalloc(1, sizeof(struct pnp_irq), GFP_KERNEL);
	if (!irq)
	if (!irq)
		return;
		return;


@@ -321,7 +321,7 @@ static void pnpacpi_parse_ext_irq_option(struct pnp_option *option,


	if (p->number_of_interrupts == 0)
	if (p->number_of_interrupts == 0)
		return;
		return;
	irq = pnpacpi_kmalloc(sizeof(struct pnp_irq), GFP_KERNEL);
	irq = kcalloc(1, sizeof(struct pnp_irq), GFP_KERNEL);
	if (!irq)
	if (!irq)
		return;
		return;


@@ -342,7 +342,7 @@ pnpacpi_parse_port_option(struct pnp_option *option,


	if (io->range_length == 0)
	if (io->range_length == 0)
		return;
		return;
	port = pnpacpi_kmalloc(sizeof(struct pnp_port), GFP_KERNEL);
	port = kcalloc(1, sizeof(struct pnp_port), GFP_KERNEL);
	if (!port)
	if (!port)
		return;
		return;
	port->min = io->min_base_address;
	port->min = io->min_base_address;
@@ -363,7 +363,7 @@ pnpacpi_parse_fixed_port_option(struct pnp_option *option,


	if (io->range_length == 0)
	if (io->range_length == 0)
		return;
		return;
	port = pnpacpi_kmalloc(sizeof(struct pnp_port), GFP_KERNEL);
	port = kcalloc(1, sizeof(struct pnp_port), GFP_KERNEL);
	if (!port)
	if (!port)
		return;
		return;
	port->min = port->max = io->base_address;
	port->min = port->max = io->base_address;
@@ -382,7 +382,7 @@ pnpacpi_parse_mem24_option(struct pnp_option *option,


	if (p->range_length == 0)
	if (p->range_length == 0)
		return;
		return;
	mem = pnpacpi_kmalloc(sizeof(struct pnp_mem), GFP_KERNEL);
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = p->min_base_address;
	mem->min = p->min_base_address;
@@ -405,7 +405,7 @@ pnpacpi_parse_mem32_option(struct pnp_option *option,


	if (p->range_length == 0)
	if (p->range_length == 0)
		return;
		return;
	mem = pnpacpi_kmalloc(sizeof(struct pnp_mem), GFP_KERNEL);
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = p->min_base_address;
	mem->min = p->min_base_address;
@@ -428,7 +428,7 @@ pnpacpi_parse_fixed_mem32_option(struct pnp_option *option,


	if (p->range_length == 0)
	if (p->range_length == 0)
		return;
		return;
	mem = pnpacpi_kmalloc(sizeof(struct pnp_mem), GFP_KERNEL);
	mem = kcalloc(1, sizeof(struct pnp_mem), GFP_KERNEL);
	if (!mem)
	if (!mem)
		return;
		return;
	mem->min = mem->max = p->range_base_address;
	mem->min = mem->max = p->range_base_address;
@@ -612,7 +612,7 @@ int pnpacpi_build_resource_template(acpi_handle handle,
	if (!res_cnt)
	if (!res_cnt)
		return -EINVAL;
		return -EINVAL;
	buffer->length = sizeof(struct acpi_resource) * (res_cnt + 1) + 1;
	buffer->length = sizeof(struct acpi_resource) * (res_cnt + 1) + 1;
	buffer->pointer = pnpacpi_kmalloc(buffer->length - 1, GFP_KERNEL);
	buffer->pointer = kcalloc(1, buffer->length - 1, GFP_KERNEL);
	if (!buffer->pointer)
	if (!buffer->pointer)
		return -ENOMEM;
		return -ENOMEM;
	pnp_dbg("Res cnt %d", res_cnt);
	pnp_dbg("Res cnt %d", res_cnt);
+8 −18
Original line number Original line Diff line number Diff line
@@ -86,16 +86,6 @@ int pnp_bios_present(void)


struct pnp_dev_node_info node_info;
struct pnp_dev_node_info node_info;


void *pnpbios_kmalloc(size_t size, int f)
{
	void *p = kmalloc( size, f );
	if ( p == NULL )
		printk(KERN_ERR "PnPBIOS: kmalloc() failed\n");
	else
		memset(p, 0, size);
	return p;
}

/*
/*
 *
 *
 * DOCKING FUNCTIONS
 * DOCKING FUNCTIONS
@@ -121,10 +111,10 @@ static int pnp_dock_event(int dock, struct pnp_docking_station_info *info)
	if (!current->fs->root) {
	if (!current->fs->root) {
		return -EAGAIN;
		return -EAGAIN;
	}
	}
	if (!(envp = (char **) pnpbios_kmalloc (20 * sizeof (char *), GFP_KERNEL))) {
	if (!(envp = (char **) kcalloc (20, sizeof (char *), GFP_KERNEL))) {
		return -ENOMEM;
		return -ENOMEM;
	}
	}
	if (!(buf = pnpbios_kmalloc (256, GFP_KERNEL))) {
	if (!(buf = kcalloc (1, 256, GFP_KERNEL))) {
		kfree (envp);
		kfree (envp);
		return -ENOMEM;
		return -ENOMEM;
	}
	}
@@ -231,7 +221,7 @@ static int pnpbios_get_resources(struct pnp_dev * dev, struct pnp_resource_table
	if(!pnpbios_is_dynamic(dev))
	if(!pnpbios_is_dynamic(dev))
		return -EPERM;
		return -EPERM;


	node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
	node = kcalloc(1, node_info.max_node_size, GFP_KERNEL);
	if (!node)
	if (!node)
		return -1;
		return -1;
	if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node)) {
	if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node)) {
@@ -254,7 +244,7 @@ static int pnpbios_set_resources(struct pnp_dev * dev, struct pnp_resource_table
	if (!pnpbios_is_dynamic(dev))
	if (!pnpbios_is_dynamic(dev))
		return -EPERM;
		return -EPERM;


	node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
	node = kcalloc(1, node_info.max_node_size, GFP_KERNEL);
	if (!node)
	if (!node)
		return -1;
		return -1;
	if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node)) {
	if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node)) {
@@ -305,7 +295,7 @@ static int pnpbios_disable_resources(struct pnp_dev *dev)
	if(dev->flags & PNPBIOS_NO_DISABLE || !pnpbios_is_dynamic(dev))
	if(dev->flags & PNPBIOS_NO_DISABLE || !pnpbios_is_dynamic(dev))
		return -EPERM;
		return -EPERM;


	node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
	node = kcalloc(1, node_info.max_node_size, GFP_KERNEL);
	if (!node)
	if (!node)
		return -ENOMEM;
		return -ENOMEM;


@@ -347,7 +337,7 @@ static int insert_device(struct pnp_dev *dev, struct pnp_bios_node * node)
	}
	}


	/* set the initial values for the PnP device */
	/* set the initial values for the PnP device */
	dev_id = pnpbios_kmalloc(sizeof(struct pnp_id), GFP_KERNEL);
	dev_id = kcalloc(1, sizeof(struct pnp_id), GFP_KERNEL);
	if (!dev_id)
	if (!dev_id)
		return -1;
		return -1;
	pnpid32_to_pnpid(node->eisa_id,id);
	pnpid32_to_pnpid(node->eisa_id,id);
@@ -385,7 +375,7 @@ static void __init build_devlist(void)
	struct pnp_bios_node *node;
	struct pnp_bios_node *node;
	struct pnp_dev *dev;
	struct pnp_dev *dev;


	node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
	node = kcalloc(1, node_info.max_node_size, GFP_KERNEL);
	if (!node)
	if (!node)
		return;
		return;


@@ -402,7 +392,7 @@ static void __init build_devlist(void)
				break;
				break;
		}
		}
		nodes_got++;
		nodes_got++;
		dev =  pnpbios_kmalloc(sizeof (struct pnp_dev), GFP_KERNEL);
		dev =  kcalloc(1, sizeof (struct pnp_dev), GFP_KERNEL);
		if (!dev)
		if (!dev)
			break;
			break;
		if(insert_device(dev,node)<0)
		if(insert_device(dev,node)<0)
Loading