discover/device-handler: Process queue after device added
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>
Tue, 24 Jan 2017 03:52:20 +0000 (14:52 +1100)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Tue, 31 Jan 2017 00:59:26 +0000 (11:59 +1100)
In device_handler_discover() we process the unresolved boot options
queue first. However the discover_device in question has not yet been
added to handler->devices so when a parser tries to search for a
matching device it will fail.
The discover_device will be added to the handler if it has not already
in device_handler_discover_context_commit() so move the call to
process_boot_option_queue() after it.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
discover/device-handler.c

index 48bfa0e237cfd410415d83a265fbbc0bed5a2284..a3891c4564b62644fd5b51ac2d740b4ba1058ac1 100644 (file)
@@ -1039,8 +1039,6 @@ int device_handler_discover(struct device_handler *handler,
                _("Processing new %s device"),
                device_type_display_name(dev->device->type));
 
-       process_boot_option_queue(handler);
-
        /* create our context */
        ctx = device_handler_discover_context_create(handler, dev);
 
@@ -1058,6 +1056,7 @@ int device_handler_discover(struct device_handler *handler,
        /* add discovered stuff to the handler */
        device_handler_discover_context_commit(handler, ctx);
 
+       process_boot_option_queue(handler);
 out:
        talloc_unlink(handler, ctx);