diff options
| author | Toomas Soome <tsoome@me.com> | 2019-10-19 11:08:38 +0300 |
|---|---|---|
| committer | Toomas Soome <tsoome@me.com> | 2019-10-28 18:00:23 +0200 |
| commit | c2e9ac5c28eb1a9d5839d914b821e44a7dfdc767 (patch) | |
| tree | b85e7f5126bbc790e761915ee2100eb164e3b615 /usr | |
| parent | 87f5f83847407477d2c5767304c83c65a73a8ff9 (diff) | |
| download | illumos-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.version | 2 | ||||
| -rw-r--r-- | usr/src/boot/lib/libstand/zfs/zfs.c | 11 |
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); |
