* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: Driver core: struct class remove children list block: do_mounts - accept root=<non-existant partition>
···76 char s[32];77 char *p;78 dev_t res = 0;07980 if (strncmp(name, "/dev/", 5) != 0) {81 unsigned maj, min;···107 for (p = s; *p; p++)108 if (*p == '/')109 *p = '!';110- res = blk_lookup_devt(s);000000000000000000000000111 if (res)112 goto done;113
···76 char s[32];77 char *p;78 dev_t res = 0;79+ int part;8081 if (strncmp(name, "/dev/", 5) != 0) {82 unsigned maj, min;···106 for (p = s; *p; p++)107 if (*p == '/')108 *p = '!';109+ res = blk_lookup_devt(s, 0);110+ if (res)111+ goto done;112+113+ /*114+ * try non-existant, but valid partition, which may only exist115+ * after revalidating the disk, like partitioned md devices116+ */117+ while (p > s && isdigit(p[-1]))118+ p--;119+ if (p == s || !*p || *p == '0')120+ goto fail;121+122+ /* try disk name without <part number> */123+ part = simple_strtoul(p, NULL, 10);124+ *p = '\0';125+ res = blk_lookup_devt(s, part);126+ if (res)127+ goto done;128+129+ /* try disk name without p<part number> */130+ if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')131+ goto fail;132+ p[-1] = '\0';133+ res = blk_lookup_devt(s, part);134 if (res)135 goto done;136