PNP: change pnp_add_id() to allocate its own pnp_id structures
This moves some of the pnp_id knowledge out of the backends and into the PNP core. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Acked-By: Rene Herman <rene.herman@gmail.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:

committed by
Len Brown

orang tua
1692b27bf3
melakukan
772defc629
@@ -332,16 +332,14 @@ static int __init insert_device(struct pnp_bios_node *node)
|
||||
if (!dev)
|
||||
return -1;
|
||||
|
||||
dev_id = kzalloc(sizeof(struct pnp_id), GFP_KERNEL);
|
||||
pnpid32_to_pnpid(node->eisa_id, id);
|
||||
dev_id = pnp_add_id(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);
|
||||
pnpbios_parse_data_stream(dev, node);
|
||||
dev->active = pnp_is_active(dev);
|
||||
dev->flags = node->flags;
|
||||
|
@@ -16,6 +16,7 @@ inline void pcibios_penalize_isa_irq(int irq, int active)
|
||||
}
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#include "../base.h"
|
||||
#include "pnpbios.h"
|
||||
|
||||
/* standard resource tags */
|
||||
@@ -548,13 +549,11 @@ static unsigned char *pnpbios_parse_compatible_ids(unsigned char *p,
|
||||
case SMALL_TAG_COMPATDEVID: /* compatible ID */
|
||||
if (len != 4)
|
||||
goto len_err;
|
||||
dev_id = kzalloc(sizeof(struct pnp_id), GFP_KERNEL);
|
||||
if (!dev_id)
|
||||
return NULL;
|
||||
pnpid32_to_pnpid(p[1] | p[2] << 8 | p[3] << 16 | p[4] <<
|
||||
24, id);
|
||||
memcpy(&dev_id->id, id, 7);
|
||||
pnp_add_id(dev_id, dev);
|
||||
dev_id = pnp_add_id(dev, id);
|
||||
if (!dev_id)
|
||||
return NULL;
|
||||
break;
|
||||
|
||||
case SMALL_TAG_END:
|
||||
|
Reference in New Issue
Block a user