summaryrefslogtreecommitdiff
path: root/usr
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2019-10-19 11:08:38 +0300
committerToomas Soome <tsoome@me.com>2019-10-28 18:00:23 +0200
commitc2e9ac5c28eb1a9d5839d914b821e44a7dfdc767 (patch)
treeb85e7f5126bbc790e761915ee2100eb164e3b615 /usr
parent87f5f83847407477d2c5767304c83c65a73a8ff9 (diff)
downloadillumos-joyent-c2e9ac5c28eb1a9d5839d914b821e44a7dfdc767.tar.gz
11881 loader: zfs_fmtdev can crash when pool discovery did fail and we have no spa
Reviewed by: C Fraire <cfraire@me.com> Reviewed by: Andy Fiddaman <andy@omniosce.org> Approved by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr')
-rw-r--r--usr/src/boot/Makefile.version2
-rw-r--r--usr/src/boot/lib/libstand/zfs/zfs.c11
2 files changed, 9 insertions, 4 deletions
diff --git a/usr/src/boot/Makefile.version b/usr/src/boot/Makefile.version
index b08a481b9a..612360ac32 100644
--- a/usr/src/boot/Makefile.version
+++ b/usr/src/boot/Makefile.version
@@ -33,4 +33,4 @@ LOADER_VERSION = 1.1
# Use date like formatting here, YYYY.MM.DD.XX, without leading zeroes.
# The version is processed from left to right, the version number can only
# be increased.
-BOOT_VERSION = $(LOADER_VERSION)-2019.10.09.1
+BOOT_VERSION = $(LOADER_VERSION)-2019.10.19.1
diff --git a/usr/src/boot/lib/libstand/zfs/zfs.c b/usr/src/boot/lib/libstand/zfs/zfs.c
index fca8c88b9d..018b43a8a0 100644
--- a/usr/src/boot/lib/libstand/zfs/zfs.c
+++ b/usr/src/boot/lib/libstand/zfs/zfs.c
@@ -785,11 +785,16 @@ zfs_fmtdev(void *vdev)
if (dev->dd.d_dev->dv_type != DEVT_ZFS)
return (buf);
- if (dev->pool_guid == 0) {
- spa = STAILQ_FIRST(&zfs_pools);
+ /* Do we have any pools? */
+ spa = STAILQ_FIRST(&zfs_pools);
+ if (spa == NULL)
+ return (buf);
+
+ if (dev->pool_guid == 0)
dev->pool_guid = spa->spa_guid;
- } else
+ else
spa = spa_find_by_guid(dev->pool_guid);
+
if (spa == NULL) {
printf("ZFS: can't find pool by guid\n");
return (buf);