When we changed try_name() to handle new-style printable dev_t formatting we broke lots of people's setups. Lilo, grub, etc. Fix that by trying new-style formatting first, then fall back to old-style. People should generally use new-style %u:%u major:minor formatting in the future. init/do_mounts.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-) diff -puN init/do_mounts.c~handle-old-dev_t-format init/do_mounts.c --- 25/init/do_mounts.c~handle-old-dev_t-format 2003-08-09 16:15:24.000000000 -0700 +++ 25-akpm/init/do_mounts.c 2003-08-09 16:17:25.000000000 -0700 @@ -71,13 +71,19 @@ static dev_t __init try_name(char *name, if (len <= 0 || len == 32 || buf[len - 1] != '\n') goto fail; buf[len - 1] = '\0'; - /* - * The format of dev is now %u:%u -- see print_dev_t() - */ - if (sscanf(buf, "%u:%u", &maj, &min) == 2) + if (sscanf(buf, "%u:%u", &maj, &min) == 2) { + /* + * Try the %u:%u format -- see print_dev_t() + */ res = MKDEV(maj, min); - else - goto fail; + } else { + /* + * Nope. Try old-style "0321" + */ + res = (dev_t)simple_strtoul(buf, &s, 16); + if (*s) + goto fail; + } /* if it's there and we are not looking for a partition - that's it */ if (!part) _