From 468628bdc39800341e7aa6ff7795cc0d93cfaf3f Mon Sep 17 00:00:00 2001 From: Michael Chang Date: Tue, 11 Apr 2023 10:59:34 +0800 Subject: [PATCH 1/2] openfw: Ensure get_devargs and get_devname functions are consistent Commit 165c9b234 changed the logic of ieee1275_get_devargs() to use the first or second occurrence of a colon as a separator between device name and arguments. However, this didn't align with the complementary function ieee1275_get_devname, which uses the first occurrence of a colon after the namespace keyword as arguments for the nvme-of device. This commit addresses the inconsistency by ensuring that both functions follow a common logic. Now, get_devargs and get_devname functions are consistent with each other, making it easier to understand and maintain the codebase. Signed-off-by: Michael Chang --- grub-core/kern/ieee1275/openfw.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c index e2ffec32d..3bbd07d95 100644 --- a/grub-core/kern/ieee1275/openfw.c +++ b/grub-core/kern/ieee1275/openfw.c @@ -354,13 +354,16 @@ static char * grub_ieee1275_get_devargs (const char *path) { char *colon = grub_strchr (path, ':'); - char *colon_check = colon; - /* Find the last occurence of colon */ - while(colon_check){ - colon = colon_check; - colon_check = grub_strchr (colon+1, ':'); - } + /* Use the same logic in grub_ieee1275_get_devname for nvme-of arguments */ + if (grub_strstr(path, "nvme-of")) + { + char *namespace_split = grub_strstr(path,"/namespace@"); + if (namespace_split) + colon = grub_strchr (namespace_split, ':'); + else + colon = NULL; + } if (! colon) return 0; -- 2.39.2