j
: Next unread message k
: Previous unread message j a
: Jump to all threads
j l
: Jump to MailingList overview
Author: blueswirl Date: Tue Aug 3 20:39:27 2010 New Revision: 831 URL: http://tracker.coreboot.org/trac/openbios/changeset/831
Log: sparc32: fix NetBSD crash
Fix NetBSD crash when printing bootpath. Also fix generation of compatibility paths when the bootpath includes partition letter (e.g. 'disk:d'). Consider also 'cd' alias of 'cdrom'.
See also r244.
Signed-off-by: Blue Swirl blauwirbel@gmail.com
Modified: trunk/openbios-devel/arch/sparc32/boot.c
Modified: trunk/openbios-devel/arch/sparc32/boot.c ============================================================================== --- trunk/openbios-devel/arch/sparc32/boot.c Sun Aug 1 23:25:08 2010 (r830) +++ trunk/openbios-devel/arch/sparc32/boot.c Tue Aug 3 20:39:27 2010 (r831) @@ -48,9 +48,12 @@ strncpy(bootargsbuf, prop, proplen);
/* Set bootpath pointer used in romvec table to the bootpath */ - bootpath = bootpathbuf; + push_str(bootpathbuf); + fword("pathres-resolve-aliases"); + bootpath = pop_fstr_copy(); + printk("bootpath: %s\n", bootpath);
- if (!strcmp(bootpathbuf, "cdrom") || !strcmp(bootpathbuf, "disk")) { + if (!strncmp(bootpathbuf, "cd", 2) || !strncmp(bootpathbuf, "disk", 4)) {
/* Controller currently always 0 */ obp_arg.boot_dev_ctrl = 0; @@ -70,10 +73,11 @@ /* Generate the "oldpath" FIXME: hardcoding this looks almost definitely wrong. With sd(0,2,0):b we get to see the solaris kernel though */ - if (!strcmp(bootpathbuf, "disk")) + if (!strncmp(bootpathbuf, "disk", 4)) { bootid = 'd'; - else + } else { bootid = 'b'; + }
snprintf(buf, sizeof(buf), "sd(0,%d,%d):%c", unit, part, bootid);
@@ -82,7 +86,7 @@ obp_arg.argv[0] = buf; obp_arg.argv[1] = bootargsbuf;
- } else if (!strcmp(bootpathbuf, "floppy")) { + } else if (!strncmp(bootpathbuf, "floppy", 6)) { obp_arg.boot_dev_ctrl = 0; obp_arg.boot_dev_unit = 0; @@ -95,7 +99,7 @@ obp_arg.argv[0] = buf; obp_arg.argv[1] = bootargsbuf;
- } else if (!strcmp(bootpathbuf, "net")) { + } else if (!strncmp(bootpathbuf, "net", 3)) {
obp_arg.boot_dev_ctrl = 0; obp_arg.boot_dev_unit = 0;
repository service wrote:
Fix NetBSD crash when printing bootpath. Also fix generation of compatibility paths when the bootpath includes partition letter (e.g. 'disk:d'). Consider also 'cd' alias of 'cdrom'.
See also r244.
Ooops my bad - I misunderstood what should have been in the bootpath. I haven't tested the fix, but it looks good to me.
ATB,
Mark.