svn commit: r327258 - head/usr.sbin/bsdinstall/partedit

Nathan Whitehorn nwhitehorn at FreeBSD.org
Thu Dec 28 01:21:32 UTC 2017


Author: nwhitehorn
Date: Thu Dec 28 01:21:30 2017
New Revision: 327258
URL: https://svnweb.freebsd.org/changeset/base/327258

Log:
  Fix bug introduced in r326674, in which efi boot partitions created by
  the installer but not mounted (i.e. with boot1.efifat dd'ed to them
  rather than the forthcoming proper filesystem) would get newfs_msdos run
  on them immediately after the boot code was copied. This would overwrite
  the bootstrap code, causing the EFI system partition to be blanked and
  resulting in an unbootable system.
  
  PR:		224562

Modified:
  head/usr.sbin/bsdinstall/partedit/gpart_ops.c

Modified: head/usr.sbin/bsdinstall/partedit/gpart_ops.c
==============================================================================
--- head/usr.sbin/bsdinstall/partedit/gpart_ops.c	Thu Dec 28 01:20:30 2017	(r327257)
+++ head/usr.sbin/bsdinstall/partedit/gpart_ops.c	Thu Dec 28 01:21:30 2017	(r327258)
@@ -942,7 +942,9 @@ add_boot_partition(struct ggeom *geom, struct gprovide
 		choice = 0;
 
 	if (choice == 0) { /* yes */
+		struct partition_metadata *md;
 		const char *bootmount = NULL;
+		char *bootpartname = NULL;
 		char sizestr[7];
 
 		humanize_number(sizestr, 7,
@@ -950,7 +952,21 @@ add_boot_partition(struct ggeom *geom, struct gprovide
 		    HN_NOSPACE | HN_DECIMAL);
 
 		gpart_create(pp, bootpart_type(scheme, &bootmount),
-		    sizestr, bootmount, NULL, 0);
+		    sizestr, bootmount, &bootpartname, 0);
+
+		if (bootpartname == NULL) /* Error reported to user already */
+			return 0;
+
+		/* If the part is not mountable, make sure newfs isn't set */
+		if (bootmount == NULL) {
+			md = get_part_metadata(bootpartname, 0);
+			if (md != NULL && md->newfs != NULL) {
+				free(md->newfs);
+				md->newfs = NULL;
+			}
+		}
+
+		free(bootpartname);
 
 		return (bootpart_size(scheme));
 	}


More information about the svn-src-all mailing list