[RFC PATCH] discover/pxe-parser: Retrieve configs asynchronously

Jeremy Kerr jk at ozlabs.org
Mon Jun 13 18:47:01 AEST 2016


Hi Sam,

> +	/*
> +	 * Retrieving PXE configs over the network can take some time depending
> +	 * on factors such as slow network, malformed paths, bad DNS, and
> +	 * overzealous firewalls. Instead of blocking the discover server while
> +	 * we wait for these, spawn an asynchronous job for each URL we can
> +	 * parse and process the resulting files in a callback.
> +	 * Since the caller will free the discover_context once
> +	 * iterate_parsers() completes, we need to copy the discover_context
> +	 * under a different talloc context so that it survives until the
> +	 * callback it finished with it.
> +	 */

This sounds a little dangerous - there may be other allocations made
under the original discover_context that get freed after
iterate_parsers() returns there.

Can we either:

 - have this code create a second reference to the talloc-ed
   discover_context, so that it doesn't get freed until both references
   have finished using the context (which may require checking that
   talloc_ref and friends work the way we assume), or

 - rethink the lifetime of the contexts, so that we only free once we
   know that the context is unused.

Cheers,


Jeremy


More information about the Petitboot mailing list