efi_selftests: fix controllers repeated selftesting
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Wed, 14 Jun 2023 06:55:48 +0000 (09:55 +0300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 16 Jun 2023 04:45:20 +0000 (06:45 +0200)
commit3ae95fe21cbd1e367e6169968ed2497a2ea8561a
tree12c2ca5da7eb1adb6d9a83d1953b8a03b9192908
parent0773e4d9d90ad7c955088b122e7319a1071813fd
efi_selftests: fix controllers repeated selftesting

Running the controller selftest more than one times fails with

=> setenv efi_selftest 'controllers' && bootefi selftest
Testing EFI API implementation
Selected test: 'controllers'
Setting up 'controllers'
Setting up 'controllers' succeeded
Executing 'controllers'
Executing 'controllers' succeeded
Summary: 0 failures

=> bootefi selftest
Testing EFI API implementation
Selected test: 'controllers'
Setting up 'controllers'
lib/efi_selftest/efi_selftest_controllers.c(280):
ERROR: InstallProtocolInterface failed
lib/efi_selftest/efi_selftest.c(89):
ERROR: Setting up 'controllers' failed
Summary: 1 failures

There are multiple reason for this.  We don't uninstall the binding
interface from the controller handle and we don't reset the handle
pointers either.  So let's uninstall all the protocols properly and
reset the handles to NULL on setup().

While at it add a forgotten check when uninstalling protocols from the
handle_controller and make sure the number of child controllers is 0

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
lib/efi_selftest/efi_selftest_controllers.c