]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-08-01 Robert Millan <rmh@gnu.org>
authorRobert Millan <rmh@aybabtu.com>
Sun, 1 Aug 2010 13:23:44 +0000 (15:23 +0200)
committerRobert Millan <rmh@aybabtu.com>
Sun, 1 Aug 2010 13:23:44 +0000 (15:23 +0200)
Prevent accidental use of uninitialized libzfs_handle.

* util/grub-probe.c (main): Move grub_util_init_libzfs() call to ...
* kern/emu/getroot.c (find_root_device_from_libzfs): ... here.
* util/misc.c (grub_util_init_libzfs): Make this function idempotent.

ChangeLog
kern/emu/getroot.c
util/grub-probe.c
util/misc.c

index abe69857445855d61bb7ff6f9c449ee0e6d7e67e..20094fec8c74226050f0037f86275cb2bee6ca0b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-08-01  Robert Millan  <rmh@gnu.org>
+
+       Prevent accidental use of uninitialized libzfs_handle.
+
+       * util/grub-probe.c (main): Move grub_util_init_libzfs() call to ...
+       * kern/emu/getroot.c (find_root_device_from_libzfs): ... here.
+       * util/misc.c (grub_util_init_libzfs): Make this function idempotent.
+
 2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 
        * util/grub.d/20_linux_xen.in: Don't use UUID for LVM root (matching
index 6caae08e6e72356c3d04ddf885ffdb4533ff4e8d..f8eda22946b19c3ebda565aa947f73cc76d12455 100644 (file)
@@ -289,6 +289,8 @@ find_root_device_from_libzfs (const char *dir)
     nvlist_t **nvlist_array;
     unsigned int nvlist_count;
 
+    grub_util_init_libzfs ();
+
     zpool = zpool_open (libzfs_handle, poolname);
     nvlist = zpool_get_config (zpool, NULL);
 
index 52f2b374758717808661414e29fd7eb06400a5e6..56cbc5592c7f040c2df0709c5c24da7e152a04f1 100644 (file)
@@ -359,7 +359,6 @@ main (int argc, char *argv[])
   set_program_name (argv[0]);
 
   grub_util_init_nls ();
-  grub_util_init_libzfs ();
 
   /* Check for options.  */
   while (1)
index 0859197bf65a62d5313936a417d82294d2f511ab..2eff256bfd84794ce5724ecb0ff1273d2bee9dec 100644 (file)
@@ -309,8 +309,11 @@ void
 grub_util_init_libzfs (void)
 {
 #ifdef HAVE_LIBZFS
-  libzfs_handle = libzfs_init ();
-  atexit (fini_libzfs);
+  if (! libzfs_handle)
+    {
+      libzfs_handle = libzfs_init ();
+      atexit (fini_libzfs);
+    }
 #endif
 }
 #endif