Skip to content

Commit

Permalink
PNP: simplify PNPBIOS insert_device
Browse files Browse the repository at this point in the history
Hoist the struct pnp_dev alloc up into the function where it's used.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Adam Belay <ambx1@neo.rr.com>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Bjorn Helgaas authored and Linus Torvalds committed Oct 17, 2007
1 parent b933e19 commit 36405e9
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions drivers/pnp/pnpbios/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,25 +315,31 @@ struct pnp_protocol pnpbios_protocol = {
.disable = pnpbios_disable_resources,
};

static int insert_device(struct pnp_dev *dev, struct pnp_bios_node *node)
static int insert_device(struct pnp_bios_node *node)
{
struct list_head *pos;
struct pnp_dev *pnp_dev;
struct pnp_dev *dev;
struct pnp_id *dev_id;
char id[8];

/* check if the device is already added */
dev->number = node->handle;
list_for_each(pos, &pnpbios_protocol.devices) {
pnp_dev = list_entry(pos, struct pnp_dev, protocol_list);
if (dev->number == pnp_dev->number)
dev = list_entry(pos, struct pnp_dev, protocol_list);
if (dev->number == node->handle)
return -1;
}

/* set the initial values for the PnP device */
dev = kzalloc(sizeof(struct pnp_dev), GFP_KERNEL);
if (!dev)
return -1;

dev_id = kzalloc(sizeof(struct pnp_id), GFP_KERNEL);
if (!dev_id)
if (!dev_id) {
kfree(dev);
return -1;
}

dev->number = node->handle;
pnpid32_to_pnpid(node->eisa_id, id);
memcpy(dev_id->id, id, 7);
pnp_add_id(dev_id, dev);
Expand Down Expand Up @@ -367,7 +373,6 @@ static void __init build_devlist(void)
unsigned int nodes_got = 0;
unsigned int devs = 0;
struct pnp_bios_node *node;
struct pnp_dev *dev;

node = kzalloc(node_info.max_node_size, GFP_KERNEL);
if (!node)
Expand All @@ -388,12 +393,7 @@ static void __init build_devlist(void)
break;
}
nodes_got++;
dev = kzalloc(sizeof(struct pnp_dev), GFP_KERNEL);
if (!dev)
break;
if (insert_device(dev, node) < 0)
kfree(dev);
else
if (insert_device(node) == 0)
devs++;
if (nodenum <= thisnodenum) {
printk(KERN_ERR
Expand Down

0 comments on commit 36405e9

Please sign in to comment.