diff options
Diffstat (limited to 'drivers/pnp')
-rw-r--r-- | drivers/pnp/isapnp/core.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c index 90718be66463..53cc4d6133e6 100644 --- a/drivers/pnp/isapnp/core.c +++ b/drivers/pnp/isapnp/core.c | |||
@@ -584,14 +584,14 @@ static int __init isapnp_create_device(struct pnp_card *card, | |||
584 | { | 584 | { |
585 | int number = 0, skip = 0, priority, compat = 0; | 585 | int number = 0, skip = 0, priority, compat = 0; |
586 | unsigned char type, tmp[17]; | 586 | unsigned char type, tmp[17]; |
587 | struct pnp_option *option; | 587 | struct pnp_option *option, *option_independent; |
588 | struct pnp_dev *dev; | 588 | struct pnp_dev *dev; |
589 | u32 eisa_id; | 589 | u32 eisa_id; |
590 | char id[8]; | 590 | char id[8]; |
591 | 591 | ||
592 | if ((dev = isapnp_parse_device(card, size, number++)) == NULL) | 592 | if ((dev = isapnp_parse_device(card, size, number++)) == NULL) |
593 | return 1; | 593 | return 1; |
594 | option = pnp_register_independent_option(dev); | 594 | option_independent = option = pnp_register_independent_option(dev); |
595 | if (!option) { | 595 | if (!option) { |
596 | kfree(dev); | 596 | kfree(dev); |
597 | return 1; | 597 | return 1; |
@@ -613,6 +613,7 @@ static int __init isapnp_create_device(struct pnp_card *card, | |||
613 | size = 0; | 613 | size = 0; |
614 | skip = 0; | 614 | skip = 0; |
615 | option = pnp_register_independent_option(dev); | 615 | option = pnp_register_independent_option(dev); |
616 | option_independent = option; | ||
616 | if (!option) { | 617 | if (!option) { |
617 | kfree(dev); | 618 | kfree(dev); |
618 | return 1; | 619 | return 1; |
@@ -662,6 +663,10 @@ static int __init isapnp_create_device(struct pnp_card *card, | |||
662 | case _STAG_ENDDEP: | 663 | case _STAG_ENDDEP: |
663 | if (size != 0) | 664 | if (size != 0) |
664 | goto __skip; | 665 | goto __skip; |
666 | if (option_independent == option) | ||
667 | dev_warn(&dev->dev, "missing " | ||
668 | "_STAG_STARTDEP tag\n"); | ||
669 | option = option_independent; | ||
665 | dev_dbg(&dev->dev, "end dependent options\n"); | 670 | dev_dbg(&dev->dev, "end dependent options\n"); |
666 | break; | 671 | break; |
667 | case _STAG_IOPORT: | 672 | case _STAG_IOPORT: |