efi_loader: rework efi_search_obj
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 6 Nov 2017 20:17:50 +0000 (21:17 +0100)
committerAlexander Graf <agraf@suse.de>
Fri, 1 Dec 2017 12:22:56 +0000 (13:22 +0100)
EFI_HANDLEs are used both in boottime and in runtime services.
efi_search_obj is a function that can be used to validate
handles. So let's make it accessible via efi_loader.h.

We can simplify the coding using list_for_each_entry.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/efi_loader.h
lib/efi_loader/efi_boottime.c

index e3d1c359301a6942be1765267fb9386efdfa88c4..2bcca3dfd8b2e4ec3b11d5c8e932536740964acf 100644 (file)
@@ -192,6 +192,8 @@ void efi_restore_gd(void);
 void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map);
 /* Call this to set the current device name */
 void efi_set_bootdev(const char *dev, const char *devnr, const char *path);
+/* Call this to validate a handle and find the EFI object for it */
+struct efi_object *efi_search_obj(void *handle);
 /* Call this to create an event */
 efi_status_t efi_create_event(uint32_t type, efi_uintn_t notify_tpl,
                              void (EFIAPI *notify_function) (
index fdbdfc4670b63aee3faa53fd95574d495239510f..2cc6d891c6f9c5ce359c4e1bebdc8bf18a622a65 100644 (file)
@@ -684,14 +684,11 @@ static efi_status_t EFIAPI efi_check_event(struct efi_event *event)
  * @handle     handle to find
  * @return     EFI object
  */
-static struct efi_object *efi_search_obj(void *handle)
+struct efi_object *efi_search_obj(void *handle)
 {
-       struct list_head *lhandle;
-
-       list_for_each(lhandle, &efi_obj_list) {
-               struct efi_object *efiobj;
+       struct efi_object *efiobj;
 
-               efiobj = list_entry(lhandle, struct efi_object, link);
+       list_for_each_entry(efiobj, &efi_obj_list, link) {
                if (efiobj->handle == handle)
                        return efiobj;
        }