{
        int number = 0, skip = 0, priority, compat = 0;
        unsigned char type, tmp[17];
-       struct pnp_option *option;
+       struct pnp_option *option, *option_independent;
        struct pnp_dev *dev;
        u32 eisa_id;
        char id[8];
 
        if ((dev = isapnp_parse_device(card, size, number++)) == NULL)
                return 1;
-       option = pnp_register_independent_option(dev);
+       option_independent = option = pnp_register_independent_option(dev);
        if (!option) {
                kfree(dev);
                return 1;
                                size = 0;
                                skip = 0;
                                option = pnp_register_independent_option(dev);
+                               option_independent = option;
                                if (!option) {
                                        kfree(dev);
                                        return 1;
                case _STAG_ENDDEP:
                        if (size != 0)
                                goto __skip;
+                       if (option_independent == option)
+                               dev_warn(&dev->dev, "missing "
+                                        "_STAG_STARTDEP tag\n");
+                       option = option_independent;
                        dev_dbg(&dev->dev, "end dependent options\n");
                        break;
                case _STAG_IOPORT: