
On Tue, Oct 12, 2021 at 11:16:03AM +0300, Ilias Apalodimas wrote:
On Mon, Oct 04, 2021 at 12:44:25PM +0900, AKASHI Takahiro wrote:
This function is a counterpart of efi_add_handle() and will be used in order to remove an efi_disk object in a later patch.
Signed-off-by: AKASHI Takahiro takahiro.akashi@linaro.org
include/efi_loader.h | 2 ++ lib/efi_loader/efi_boottime.c | 8 ++++++++ 2 files changed, 10 insertions(+)
diff --git a/include/efi_loader.h b/include/efi_loader.h index cfbe1fe659ef..50f4119dcdfb 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -579,6 +579,8 @@ void efi_save_gd(void); void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map); /* Add a new object to the object list. */ void efi_add_handle(efi_handle_t obj); +/* Remove a object from the object list. */ +void efi_remove_handle(efi_handle_t obj); /* Create handle */ efi_status_t efi_create_handle(efi_handle_t *handle); /* Delete handle */ diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index f0283b539e46..b2503b74233b 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -503,6 +503,14 @@ void efi_add_handle(efi_handle_t handle) list_add_tail(&handle->link, &efi_obj_list); }
+void efi_remove_handle(efi_handle_t handle) +{
- if (!handle)
return;
- list_del(&handle->link);
+}
We already have efi_delete_handle(). You can't unconditionally remove a handle unless all protocols are removed. Can't you just use the existing function?
My intent was to add this function as a counterpart of efi_add_handle() since not all the handles are dynamically allocated on its own. As far as my usage in this patch series is concerned, however, it is always used accompanying efi_remove_all_protocols() and free(). (See efi_disk_delete_xxx() in efi_disk.c)
So, yes we can use efi_delete_handle() instead. (assuming 'header' is the first member in struct efi_disk_obj.)
-Takahiro Akashi
Cheers /Ilias
/**
- efi_create_handle() - create handle
- @handle: new handle
-- 2.33.0