]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-08-15 Robert Millan <rmh@gnu.org>
authorRobert Millan <rmh@aybabtu.com>
Sun, 15 Aug 2010 20:48:23 +0000 (22:48 +0200)
committerRobert Millan <rmh@aybabtu.com>
Sun, 15 Aug 2010 20:48:23 +0000 (22:48 +0200)
* kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init()
errors.
* kern/emu/getroot.c (find_root_device_from_libzfs): Handle
grub_get_libzfs_handle() errors.

ChangeLog
kern/emu/getroot.c
kern/emu/misc.c

index b88eae46f5e5b7d5599c197ce35ef0c467933d29..b662428bcf86356dfd7a8ad5e04b0c3fddc46d1b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-08-15  Robert Millan  <rmh@gnu.org>
+
+       * kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init()
+       errors.
+       * kern/emu/getroot.c (find_root_device_from_libzfs): Handle
+       grub_get_libzfs_handle() errors.
+
 2010-08-14  Robert Millan  <rmh@gnu.org>
 
        * kern/emu/misc.c (grub_find_zpool_from_dir): Abort function if
index 321b33bb3e593ff387e75c9360a29245ed1f9398..c0a10d22ba5835465535a2f2e6b351a51b1ac6f4 100644 (file)
@@ -188,11 +188,16 @@ find_root_device_from_libzfs (const char *dir)
 
   {
     zpool_handle_t *zpool;
+    libzfs_handle_t *libzfs;
     nvlist_t *nvlist;
     nvlist_t **nvlist_array;
     unsigned int nvlist_count;
 
-    zpool = zpool_open (grub_get_libzfs_handle (), poolname);
+    libzfs = grub_get_libzfs_handle ();
+    if (! libzfs)
+      return NULL;
+
+    zpool = zpool_open (libzfs, poolname);
     nvlist = zpool_get_config (zpool, NULL);
 
     if (nvlist_lookup_nvlist (nvlist, "vdev_tree", &nvlist) != 0)
index 29be877200c34a6b2aef5c6887335432a2d336b2..82f5796163a62903d78362a57df2c23406783d1b 100644 (file)
@@ -268,7 +268,9 @@ grub_get_libzfs_handle (void)
   if (! __libzfs_handle)
     {
       __libzfs_handle = libzfs_init ();
-      atexit (fini_libzfs);
+
+      if (__libzfs_handle)
+       atexit (fini_libzfs);
     }
 
   return __libzfs_handle;