X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpnp%2Fisapnp%2Fcore.c;h=6ec4862425951ac3aa7b5bbcb4af134187b35672;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ee6d1ed502ff9a9a8e435b4cc680de830107bf20;hpb=9bf4aaab3e101692164d49b7ca357651eb691cb6;p=linux-2.6.git diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c index ee6d1ed50..6ec486242 100644 --- a/drivers/pnp/isapnp/core.c +++ b/drivers/pnp/isapnp/core.c @@ -58,13 +58,13 @@ int isapnp_verbose = 1; /* verbose mode */ MODULE_AUTHOR("Jaroslav Kysela "); MODULE_DESCRIPTION("Generic ISA Plug & Play support"); -MODULE_PARM(isapnp_disable, "i"); +module_param(isapnp_disable, int, 0); MODULE_PARM_DESC(isapnp_disable, "ISA Plug & Play disable"); -MODULE_PARM(isapnp_rdp, "i"); +module_param(isapnp_rdp, int, 0); MODULE_PARM_DESC(isapnp_rdp, "ISA Plug & Play read data port"); -MODULE_PARM(isapnp_reset, "i"); +module_param(isapnp_reset, int, 0); MODULE_PARM_DESC(isapnp_reset, "ISA Plug & Play reset all cards"); -MODULE_PARM(isapnp_verbose, "i"); +module_param(isapnp_verbose, int, 0); MODULE_PARM_DESC(isapnp_verbose, "ISA Plug & Play verbose mode"); MODULE_LICENSE("GPL"); @@ -477,12 +477,14 @@ static void __init isapnp_parse_irq_resource(struct pnp_option *option, { unsigned char tmp[3]; struct pnp_irq *irq; + unsigned long bits; isapnp_peek(tmp, size); irq = isapnp_alloc(sizeof(struct pnp_irq)); if (!irq) return; - irq->map = (tmp[1] << 8) | tmp[0]; + bits = (tmp[1] << 8) | tmp[0]; + bitmap_copy(irq->map, &bits, 16); if (size > 2) irq->flags = tmp[2]; else @@ -655,8 +657,10 @@ static int __init isapnp_create_device(struct pnp_card *card, if ((dev = isapnp_parse_device(card, size, number++)) == NULL) return 1; option = pnp_register_independent_option(dev); - if (!option) + if (!option) { + kfree(dev); return 1; + } pnp_add_card_device(card,dev); while (1) {