diff --git a/ChangeLog b/ChangeLog index e48883ae2..c52567083 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-06-02 Vladimir Serbinenko + + * util/getroot.c (grub_guess_root_devices): Don't canonicalise + /dev/root and /dev/dm-*. + 2012-06-02 Vladimir Serbinenko * grub-core/normal/menu_entry.c (update_screen): Fix loop condition to diff --git a/util/getroot.c b/util/getroot.c index 3333a241f..042fd7dd5 100644 --- a/util/getroot.c +++ b/util/getroot.c @@ -1036,10 +1036,16 @@ grub_guess_root_devices (const char *dir) { char *tmp = *cur; int root, dm; - *cur = canonicalize_file_name (tmp); - if (*cur == NULL) - grub_util_error (_("failed to get canonical path of %s"), tmp); - free (tmp); + if (strcmp (*cur, "/dev/root") == 0 + || strncmp (*cur, "/dev/dm-", sizeof ("/dev/dm-") - 1) == 0) + *cur = tmp; + else + { + *cur = canonicalize_file_name (tmp); + if (*cur == NULL) + grub_util_error (_("failed to get canonical path of %s"), tmp); + free (tmp); + } root = (strcmp (*cur, "/dev/root") == 0); dm = (strncmp (*cur, "/dev/dm-", sizeof ("/dev/dm-") - 1) == 0); if (!dm && !root)