loader panics with 2 GPT partitioned drives

Yuri Pankov yuri.pankov at gmail.com
Sat Jun 6 17:52:18 UTC 2009


On Sat, Jun 06, 2009 at 06:18:35AM +0400, Yuri Pankov wrote:
> Hi,
> 
> I'm getting the following "panic" from loader when trying to attach
> another GPT partitioned drive. loader is built using LOADER_ZFS_SUPPORT.
> 
> BTX Loader 1.00  BTX version is 1.02
> Consoles: internal video/keyboard
> BIOS drive C: is disk0
> BIOS drive D: is disk1
> 
> panic:free: guard1 fail @ 0x7fd4b3f4 from
> /usr/src/sys/boot/i386/libi386/biosdisk.c:1048
> 
> 
> ad4:
> =>       34  488397101  ad4  GPT  (233G)
>          34        128    1  freebsd-boot  (64K)
>         162   16777216    2  freebsd-swap  (8.0G)
>    16777378  471619757    3  freebsd-zfs  (225G)
> 
> ad10:
> empty disk, `gpart create -s GPT ad10`
> 
> 
> 
> Yuri

Looks like there are no checks in loader with GPT support if there are
no partitions defined (very rare case, but still.. :-). Attached patch
fixes booting with GPT disk without partitions (for me).


Yuri
-------------- next part --------------
Index: biosdisk.c
===================================================================
--- biosdisk.c	(revision 193589)
+++ biosdisk.c	(working copy)
@@ -990,7 +990,8 @@
 
 out:
     if (error) {
-	free(od->od_partitions);
+	if (od->od_nparts > 0)
+		free(od->od_partitions);
 	od->od_flags &= ~BD_GPTOK;
     }
     return (error);
@@ -1044,7 +1045,7 @@
 	delay(3000000);
 #endif
 #ifdef LOADER_GPT_SUPPORT
-    if (od->od_flags & BD_GPTOK)
+    if (od->od_flags & BD_GPTOK && od->od_nparts > 0)
 	free(od->od_partitions);
 #endif
     free(od);


More information about the freebsd-current mailing list