From patchwork Sun Nov 12 14:02:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 837177 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3yZbGV5WtDz9s9Y for ; Mon, 13 Nov 2017 01:08:34 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 650ECC21DDD; Sun, 12 Nov 2017 14:05:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5A529C21DCA; Sun, 12 Nov 2017 14:04:00 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id AD62FC21DAB; Sun, 12 Nov 2017 14:03:54 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lists.denx.de (Postfix) with ESMTPS id 60D49C21C51 for ; Sun, 12 Nov 2017 14:03:53 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx003 [212.227.17.184]) with ESMTPSA (Nemesis) id 0LnfuZ-1erKjO2cnv-00htVQ; Sun, 12 Nov 2017 15:03:05 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Sun, 12 Nov 2017 15:02:40 +0100 Message-Id: <20171112140247.26532-12-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171112140247.26532-1-xypron.glpk@gmx.de> References: <20171112140247.26532-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:TO5OFTy8wMBXHkmfVJDiPfpT7TflvezRkBMBFC3L+OCIt5NIqGw GCuB8W6DYxBiXlZNmE0reju9iloNzm87EtBBDYgjyhITC2FW8b+6TUFRb5//zJUkfS5sGvw zDsRTTOqrrwYQjurlLiDv0ErrDAHCplzP2k9j5B2xJ8/gnxrWaFkKJzoJw4g+fAAZg+kE2r KzMak0DomO5Foy+gn7puQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:7z7h9ruq/K8=:ky31URJ5fB6NZnM+/w2nwW wa4B6hTSzfg6NCUJTGiMsrNWGsyg6onkHgYqqKrqMh+he/d+h21UYvGkCcuUp4iIFkJG13MsZ 6J2XZjs6GK6cK5Qx3/8BzEFP8F8wvtFk88zm+8LEvMyXCtXX+5WDVyGxe/2SyO4+xGHw2C6SB mvO2uAGtA2N0H6OZrLeLShmNkKkp0ryUUFQEzV96H+l7JnpJ0OLAqXRtzkwjFqlHVBaqAbNTn by5mWOAJrEZxaKjuxSkbbnUqtf+S8y4fwn/On/QVhxHhyjkPLOiPUozieqFOMx5bcMcee1yCW D9B2kIQYeRpilupZnYgQ6LUt8zsAFYjzsunu14dxJGzponz6MIvR4Tp9gEdSt3O1eKMRHkqa8 6/p6NPifUSpLcqYQWtTuVHXBcbpWjSWfIT7mZrpawqZfe0O2+ngqgcRBN1XMH+rLRnhRaa0UP 2vqQwS79FLBXysqVIYN4+5OlvfKC6sAbcF1Q51/4H9OpCeZbYu2uTGVoHwmMCeWw18sbLKQMj xBTg5WcNbzUBnKe/r94hlXRE/SgtGG3+gDkmtzVogE91Uy1rzAGOKiP61p5F3LobNIew7yBwI DrrQ4mE9E8uKDZVndtWZOIzpo+PrXGCV4a3aUASjb7bA++nmeXbxCwsxRRAEiDwZO0hngQs0n Lit3lhAPtLIO97dXrpLXA/bIoVELj6peV/pgyp5bQAzKdGFkUzDquBRG+tUaBq/NtY3rEDsZl HEKGoKGRlC9GdB84Jq3fBPFBIoXPPyxD8ee2PRbLZhG44JWnpof8An0HYEKabXbuL88KJCrDX 6CcERs8DlD/1sgqR7+mJNz0EkLVlA== Cc: Heinrich Schuchardt , u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2 11/18] efi_loader: simplify find_obj X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use function efi_search_protocol. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v2 no change --- lib/efi_loader/efi_device_path.c | 43 ++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 024877161b..98034216da 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -128,32 +128,27 @@ static struct efi_object *find_obj(struct efi_device_path *dp, bool short_path, struct efi_object *efiobj; list_for_each_entry(efiobj, &efi_obj_list, link) { - int i; - - for (i = 0; i < ARRAY_SIZE(efiobj->protocols); i++) { - struct efi_handler *handler = &efiobj->protocols[i]; - struct efi_device_path *obj_dp; - - if (!handler->guid) - break; - - if (guidcmp(handler->guid, &efi_guid_device_path)) - continue; - - obj_dp = handler->protocol_interface; - - do { - if (efi_dp_match(dp, obj_dp) == 0) { - if (rem) { - *rem = ((void *)dp) + - efi_dp_size(obj_dp); - } - return efiobj; + struct efi_handler *handler; + struct efi_device_path *obj_dp; + efi_status_t ret; + + ret = efi_search_protocol(efiobj->handle, + &efi_guid_device_path, &handler); + if (ret != EFI_SUCCESS) + continue; + obj_dp = handler->protocol_interface; + + do { + if (efi_dp_match(dp, obj_dp) == 0) { + if (rem) { + *rem = ((void *)dp) + + efi_dp_size(obj_dp); } + return efiobj; + } - obj_dp = shorten_path(efi_dp_next(obj_dp)); - } while (short_path && obj_dp); - } + obj_dp = shorten_path(efi_dp_next(obj_dp)); + } while (short_path && obj_dp); } return NULL;