[PATCH 088/112] efi: refactor device_path_to_partuuid for code reuse
Ahmad Fatoum
a.fatoum at pengutronix.de
Wed Jan 3 10:12:48 PST 2024
Continuing walk of a device path until the next compatible node will
come in handy later as well, so factor that out into a new
device_path_next_compatible_node().
No functional change intended.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
efi/devicepath.c | 41 ++++++++++++++++++++++++-----------------
1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/efi/devicepath.c b/efi/devicepath.c
index 6ec0c3780f37..d562bf482955 100644
--- a/efi/devicepath.c
+++ b/efi/devicepath.c
@@ -801,33 +801,40 @@ u8 device_path_to_subtype(const struct efi_device_path *dev_path)
return dev_path->sub_type;
}
+static const struct efi_device_path *
+device_path_next_compatible_node(const struct efi_device_path *dev_path,
+ u8 type, u8 subtype)
+{
+ for (; !is_device_path_end(dev_path);
+ dev_path = next_device_path_node(dev_path)) {
+
+ if (device_path_type(dev_path) != type)
+ continue;
+
+ if (dev_path->sub_type != subtype)
+ continue;
+
+ return dev_path;
+ }
+
+ return NULL;
+}
char *device_path_to_partuuid(const struct efi_device_path *dev_path)
{
- const struct efi_device_path *dev_path_node;
- struct harddrive_device_path *hd;
- char *str = NULL;;
-
dev_path = unpack_device_path(dev_path);
- for (dev_path_node = dev_path; !is_device_path_end(dev_path_node);
- dev_path_node = next_device_path_node(dev_path_node)) {
-
- if (device_path_type(dev_path_node) != MEDIA_DEVICE_PATH)
- continue;
-
- if (dev_path_node->sub_type != MEDIA_HARDDRIVE_DP)
- continue;
-
- hd = (struct harddrive_device_path *)dev_path_node;
+ while ((dev_path = device_path_next_compatible_node(dev_path,
+ MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP))) {
+ struct harddrive_device_path *hd =
+ (struct harddrive_device_path *)dev_path;
if (hd->signature_type != SIGNATURE_TYPE_GUID)
continue;
- str = xasprintf("%pUl", (efi_guid_t *)&(hd->signature[0]));
- break;
+ return xasprintf("%pUl", (efi_guid_t *)&(hd->signature[0]));
}
- return str;
+ return NULL;
}
--
2.39.2
More information about the barebox
mailing list