diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-12-02 11:20:04 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-12-02 12:05:13 +0800 |
commit | d27570168fd6d5a2144553002c8082ae626b7e84 (patch) | |
tree | 4919cc264ea7f51aa6f8add8b404faeac50a65f9 /test/parser/utils.c | |
parent | c4f34e487fbf061ee6385d1f75e4ef0084c9a1ba (diff) | |
download | talos-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.c | 15 |
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) { |