summaryrefslogtreecommitdiffstats
path: root/test/parser/utils.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-12-02 11:20:04 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-12-02 12:05:13 +0800
commitd27570168fd6d5a2144553002c8082ae626b7e84 (patch)
tree4919cc264ea7f51aa6f8add8b404faeac50a65f9 /test/parser/utils.c
parentc4f34e487fbf061ee6385d1f75e4ef0084c9a1ba (diff)
downloadtalos-petitboot-d27570168fd6d5a2144553002c8082ae626b7e84.tar.gz
talos-petitboot-d27570168fd6d5a2144553002c8082ae626b7e84.zip
discover/device-handler: Ensure we free unresolved boot options on remove
When we remove a device, some options may still be unresolved, and so won't be deallocated through freeing the device. This chagne explicitly removes & frees any currently-unresolved options for this device. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'test/parser/utils.c')
-rw-r--r--test/parser/utils.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/parser/utils.c b/test/parser/utils.c
index b80e0e1..8011793 100644
--- a/test/parser/utils.c
+++ b/test/parser/utils.c
@@ -301,6 +301,21 @@ void test_hotplug_device(struct parser_test *test, struct discover_device *dev)
boot_option_resolve(test->handler, opt);
}
+void test_remove_device(struct parser_test *test, struct discover_device *dev)
+{
+ struct discover_boot_option *opt, *tmp;
+
+ if (dev == test->ctx->device) {
+ list_for_each_entry_safe(&test->ctx->boot_options,
+ opt, tmp, list) {
+ list_remove(&opt->list);
+ talloc_free(opt);
+ }
+ }
+
+ device_handler_remove(test->handler, dev);
+}
+
struct discover_boot_option *get_boot_option(struct discover_context *ctx,
int idx)
{
OpenPOWER on IntegriCloud