On Tue, Sep 06, 2011 at 08:39:24AM +0100, Stephane Chazelas wrote: > I do get a segfault as well when doing a grub-setup/grub-install > on a mdraid with 1.2 metadata. > > The segv is in: > > grub_util_biosdisk_is_floppy() because the disk->id for the root > device is not a bios disk id, but a big number that is the > "array id". The patch below seems to fix it for me, though I > can't tell it's the right fix or not (probably not).
This fix makes sense to me; calling grub_util_biosdisk_is_floppy on disks that aren't GRUB_DISK_DEVICE_BIOSDISK_ID doesn't make sense. grub-devel, second opinion? > --- a/util/grub-setup.c 2011-09-05 12:11:31.864955442 +0100 > +++ b/util/grub-setup.c 2011-09-05 13:00:24.891368760 +0100 > @@ -315,7 +315,7 @@ > /* If DEST_DRIVE is a hard disk, enable the workaround, which is > for buggy BIOSes which don't pass boot drive correctly. Instead, > they pass 0x00 or 0x01 even when booted from 0x80. */ > - if (!allow_floppy && !grub_util_biosdisk_is_floppy (dest_dev->disk)) > + if (!allow_floppy && dest_dev->disk->dev->id == > GRUB_DISK_DEVICE_BIOSDISK_ID && !grub_util_biosdisk_is_floppy > (dest_dev->disk)) > /* Replace the jmp (2 bytes) with double nop's. */ > *boot_drive_check = 0x9090; > } Thanks, -- Colin Watson [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel