1. 30 10月, 2013 1 次提交
    • D
      MacOS: Re-add support for QEMU backend · 915c6936
      Doug Goldstein 提交于
      The QEMU backend was disabled on Mac OS X without a reason in the code
      and due to refactors its difficult to understand when/why it was
      disabled. With QEMU being supported on Mac OS X there is no reason to
      disable QEMU on this platform.
      915c6936
  2. 21 10月, 2013 1 次提交
    • D
      Don't link virt-login-shell against libvirt.so (CVE-2013-4400) · 3e2f27e1
      Daniel P. Berrange 提交于
      The libvirt.so library has far too many library deps to allow
      linking against it from setuid programs. Those libraries can
      do stuff in __attribute__((constructor) functions which is
      not setuid safe.
      
      The virt-login-shell needs to link directly against individual
      files that it uses, with all library deps turned off except
      for libxml2 and libselinux.
      
      Create a libvirt-setuid-rpc-client.la library which is linked
      to by virt-login-shell. A config-post.h file allows this library
      to disable all external deps except libselinux and libxml2.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      3e2f27e1
  3. 07 10月, 2013 2 次提交
    • E
      build: move readline check into its own macro · d6eac3f3
      Eric Blake 提交于
      A future patch will allow disabling readline; doing this in an
      isolated file instead of configure.ac will make the task easier.
      
      * configure.ac: Move readline code...
      * m4/virt-readline.m4: ...here.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      d6eac3f3
    • E
      build: kill maintainer mode, always rebuild by default · 3fde7ad8
      Eric Blake 提交于
      The automake manual recommends against the use of disabling
      maintainer mode by default:
      
      https://www.gnu.org/software/automake/manual/automake.html#maintainer_002dmode
      
      because when it is disabled, the user gets no indication if they
      touch a file that would normally require a rebuild.  Automake
      1.11 changed things so that AM_MAINTAINER_MODE([enable]) will set
      the mode to enabled by default; but RHEL 5 still uses automake 1.9,
      where AM_MAINTAINER_MODE did not recognize an argument, and
      therefore disables maintainer mode by default.  Having the default
      be different according to which version of automake built the
      project is annoying, and I _have_ been bitten on RHEL 5 rebuilds
      where the default disabled mode led to silently incorrect builds.
      
      The automake manual admits that being able to disable maintainer
      mode still makes sense for projects that still store generated
      files from the autotools in version control; but we have dropped
      that for several years now.  As such, it's finally time to just
      ditch the whole idea of maintainer mode, and unconditionally
      rebuild autotools files if a dependency changes, without offering
      a configure option to disable that mode.
      
      * configure.ac (AM_MAINTAINER_MODE): Drop.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      3fde7ad8
  4. 05 10月, 2013 1 次提交
    • E
      build: fix build --without-remote · bdc55cc7
      Eric Blake 提交于
      I tried to test ./configure --without-lxc --without-remote.
      First, the build failed with some odd errors, such as an
      inability to build xen, or link failures for virNetTLSInit.
      But when you think about it, once there is no remote code,
      all of libvirtd is useless, any stateful driver that depends
      on libvirtd is also not worth compiling, and any libraries
      used only by RPC code are not needed.  So I patched
      configure.ac to make for some saner defaults when an
      explicit disable is attempted.  Similarly, since we have
      migrated virnetdevbridge into generic code, the workaround
      for Linux kernel stupidity must not depend on stateful
      drivers being in use.
      
      Then there's 'make check' that needs segregation.
      
      Wow - quite a bit of cleanup to make --without-remote useful :)
      
      * configure.ac: Let --without-remote toggle defaults on stateful
      drivers and other libraries.  Pick up Linux kernel workarounds
      even when qemu and lxc are not being compiled.
      * tests/Makefile.am (test_programs): Factor out programs that
      require remote.
      * src/libvirt_private.syms (rpc/virnet*.h): Move...
      * src/libvirt_remote.syms: ...into new file.
      * src/Makefile.am (SYM_FILES): Ship new syms file.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bdc55cc7
  5. 04 10月, 2013 1 次提交
    • O
      storage: fix file allocation behavior in file cloning · 532fef36
      Oskari Saarenmaa 提交于
      Fixed the safezero call for allocating the rest of the file after cloning
      an existing volume; it used to always use a zero offset, causing it to
      only allocate the beginning of the file.
      
      Also modified file creation to try to use fallocate(2) to pre-allocate
      disk space before copying any data to make sure it fails early on if disk
      is full and makes sure we can skip zero blocks when copying file contents.
      
      If fallocate isn't available we will zero out the rest of the file after
      cloning and only use sparse cloning if client requested a lower allocation
      than the input volume's capacity.
      Signed-off-by: NOskari Saarenmaa <os@ohmu.fi>
      532fef36
  6. 01 10月, 2013 1 次提交
    • D
      Release of libvirt-1.1.3 · a72940f9
      Daniel Veillard 提交于
      - configure.ac docs/news.html.in libvirt.spec.in: update for release
      - po/*.po*: updated localization and regenerated
      a72940f9
  7. 18 9月, 2013 2 次提交
    • D
      Add support for using 3-arg pkcheck syntax for process (CVE-2013-4311) · 922b7fda
      Daniel P. Berrange 提交于
      With the existing pkcheck (pid, start time) tuple for identifying
      the process, there is a race condition, where a process can make
      a libvirt RPC call and in another thread exec a setuid application,
      causing it to change to effective UID 0. This in turn causes polkit
      to do its permission check based on the wrong UID.
      
      To address this, libvirt must get the UID the caller had at time
      of connect() (from SO_PEERCRED) and pass a (pid, start time, uid)
      triple to the pkcheck program.
      
      This fix requires that libvirt is re-built against a version of
      polkit that has the fix for its CVE-2013-4288, so that libvirt
      can see 'pkg-config --variable pkcheck_supports_uid polkit-gobject-1'
      Signed-off-by: NColin Walters <walters@redhat.com>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      922b7fda
    • E
      build: hoist system-specific checks before library checks · 0e1f012c
      Eric Blake 提交于
      Commit f92c7e31 fixed a regression for native builds, but introduced
      a regression for cross-compilation builds; in particular,
      ./autobuild.sh on a Fedora system with mingw cross-compiler fails
      with:
      
      checking for qemu-kvm... /usr/bin/qemu-kvm
      checking for yajl_parse_complete in -lyajl... no
      checking for yajl_tree_parse in -lyajl... no
      configure: error: You must install the libyajl library & headers to compile libvirt
      
      Since we default $with_qemu to 'yes' rather than 'check', and then
      flip that default based on platform-specific checks, those platform
      specifics need to come prior to any library checks that depend on
      the value of $with_qemu.
      
      * configure.ac: Ensure system defaults are sane before checking
      for things that make decisions based on system default.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0e1f012c
  8. 16 9月, 2013 1 次提交
    • E
      build: fix build with latest rawhide kernel headers · e62e0094
      Eric Blake 提交于
      Bother those kernel developers.  In the latest rawhide, kernel
      and glibc have now been unified so that <netinet/in.h> and
      <linux/in6.h> no longer clash; but <linux/if_bridge.h> is still
      not self-contained.  Because of the latest header change, the
      build is failing with:
      
      checking for linux/param.h... no
      configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
      
      with details:
      
      In file included from conftest.c:561:0:
      /usr/include/linux/in6.h:71:18: error: field 'flr_dst' has incomplete type
        struct in6_addr flr_dst;
      
      We need a workaround to avoid our workaround :)
      
      * configure.ac (NETINET_LINUX_WORKAROUND): New test.
      * src/util/virnetdevbridge.c (includes): Use it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      e62e0094
  9. 12 9月, 2013 1 次提交
    • E
      build: require libnl-3 if netcf uses it · cf83adfb
      Eric Blake 提交于
      Commits 9298bfbc and f6c29515 both tried to make it possible to
      select the correct libnl (1 vs. 3) according to what netcf
      used, when both libraries are installed.  This works to avoid
      libnl-3 when netcf used libnl-1.  But on the converse side, if
      only libnl-1 development code is installed, while netcf uses
      libnl-3, then configure happily uses libnl-1 anyways, leading
      to a test failure:
      
      $ VIR_TEST_DEBUG=1 ./virdrivermoduletest
      TEST: virdrivermoduletest
       1) Test driver "network"                                             ... OK
       2) Test driver "storage"                                             ... OK
       3) Test driver "nodedev"                                             ... OK
       4) Test driver "secret"                                              ... OK
       5) Test driver "nwfilter"                                            ... OK
       6) Test driver "interface"
      ... lt-virdrivermoduletest: route/tc.c:973: rtnl_tc_register: Assertion
      `0' failed.
      Aborted
      
      It's much nicer to prevent this at configure time, by requiring that
      if we know what netcf used, then we want the same libnl version.  As
      before, this can be bypassed by someone who knows what they are doing
      by setting LIBNL_CFLAGS (perhaps useful to the rare person where the
      build box has a different version of netcf than the installation box).
      
      * configure.ac (LIBNL): If we can prove netcf used libnl-3, then
      don't let configure succeed with libnl-1.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      cf83adfb
  10. 11 9月, 2013 1 次提交
    • E
      build: fix regression in requiring yajl for new enough qemu · f92c7e31
      Eric Blake 提交于
      Jonathan Lebon reported an issue to me off-list about his build
      failing to use qemu because he failed to install yajl-devel.  But
      I recalled specifically tweaking configure.ac to die in that
      situation (commits 350583c8, ba9c38b4).  After a bit more
      head-scratching, we found the cause of the regression: commit
      654c709b rearranged things so that the qemu version check now
      occurs before AC_ARG_WITH has had a chance to set either
      $with_qemu or $with_yajl.
      
      Coincidentally, this fix aligns with a documentation patch that
      was just posted to the autoconf mailing list :)
      http://thread.gmane.org/gmane.comp.sysutils.autoconf.patches/8324
      
      * m4/virt-lib.m4 (LIBVIRT_CHECK_LIB, LIBVIRT_CHECK_LIB_ALT)
      (LIBVIRT_CHECK_PKG): Populate defaults earlier.
      * configure.ac (AC_ARG_WITH): Likewise for drivers.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f92c7e31
  11. 10 9月, 2013 2 次提交
    • E
      build: avoid obsolete AC_HELP_STRING · ff777421
      Eric Blake 提交于
      Autoconf states that AC_HELP_STRING is obsolete, and that new
      programs should use AS_HELP_STRING.  We also had instances of
      not properly quoting the macro usage, and not relying on autoconf's
      word-wrapping abilities to avoid long lines.  I validated that this
      commit has no impact to the generated configure file.
      
      * configure.ac (AC_ARG_WITH, AC_ARG_ENABLE): Autoconf recommends
      the use of AS_HELP_STRING.  Also, use proper quoting and wrap long
      lines.
      * m4/virt-apparmor.m4 (LIBVIRT_CHECK_APPARMOR): Likewise.
      * m4/virt-selinux.m4 (LIBVIRT_CHECK_SELINUX): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ff777421
    • E
      build: use automake subdir-objects · 7f626e47
      Eric Blake 提交于
      Automake 2.0 will enable subdir-objects by default; in preparation
      for that change, automake 1.14 outputs LOADS of warnings:
      
      daemon/Makefile.am:38: warning: source file '../src/remote/remote_protocol.c' is in a subdirectory,
      daemon/Makefile.am:38: but option 'subdir-objects' is disabled
      automake-1.14: warning: possible forward-incompatibility.
      automake-1.14: At least a source file is in a subdirectory, but the 'subdir-objects'
      automake-1.14: automake option hasn't been enabled.  For now, the corresponding output
      automake-1.14: object file(s) will be placed in the top-level directory.  However,
      automake-1.14: this behaviour will change in future Automake versions: they will
      automake-1.14: unconditionally cause object files to be placed in the same subdirectory
      automake-1.14: of the corresponding sources.
      automake-1.14: You are advised to start using 'subdir-objects' option throughout your
      automake-1.14: project, to avoid future incompatibilities.
      daemon/Makefile.am:38: warning: source file '../src/remote/lxc_protocol.c' is in a subdirectory,
      daemon/Makefile.am:38: but option 'subdir-objects' is disabled
      ...
      
      As automake 1.9 also supported this option, and the previous patches
      fixed up the code base to work with it, it is safe to now turn it on
      unconditionally.
      
      * configure.ac (AM_INIT_AUTOMAKE): Enable subdir-objects.
      * .gitignore: Ignore .dirstamp directories.
      * src/Makefile.am (PDWTAGS, *-protocol-struct): Adjust to
      new subdir-object location of .lo files.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7f626e47
  12. 05 9月, 2013 2 次提交
    • E
      build: shut up automake warnings · 1ac24b3b
      Eric Blake 提交于
      I'm tired of seeing screenfuls of messages like these when using
      automake 1.13 (Fedora 19):
      
      configure.ac:2121: warning: The 'AM_PROG_MKDIR_P' macro is deprecated, and its use is discouraged.
      configure.ac:2121: You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
      configure.ac:2121: and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
      daemon/Makefile.am:19: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
      
      seeing as how we MUST use those constructs for the benefit of
      automake 1.9 (RHEL 5).  Conversely, RHEL 5 automake complained:
      
      aclocal:configure.ac:36: warning: macro `AM_SILENT_RULES' not found in library
      
      Obviously, I tested this patch on both Fedora 19 and RHEL 5.
      
      * configure.ac (AM_INIT_AUTOMAKE): Avoid obsoletion warnings.
      (AM_SILENT_RULES): Avoid unknown macro warning.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      1ac24b3b
    • I
      Use loop-control to allocate loop device. · 9ba230d4
      Ian Main 提交于
      This patch changes virFileLoopDeviceOpen() to use the new loop-control
      device to allocate a new loop device.  If this behavior is unsupported
      we fall back to the previous method of searching /dev for a free device.
      
      With this patch you can start as many image based LXC domains as you
      like (well almost).
      
      Fixes bug https://bugzilla.redhat.com/show_bug.cgi?id=995543
      9ba230d4
  13. 02 9月, 2013 1 次提交
    • D
      Release of libvirt-1.1.2 · 85240dab
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: merged new localizations and regenerated
      85240dab
  14. 22 8月, 2013 3 次提交
  15. 13 8月, 2013 1 次提交
    • E
      build: add configure option to disable gnulib tests · 70363ea9
      Eric Blake 提交于
      The gnulib testsuite is relatively stable - the only times it is
      likely to have a test change from pass to fail is on a gnulib
      submodule update or a major system change (such as moving from
      Fedora 18 to 19, or other large change to libc).  While it is an
      important test for end users on arbitrary machines (to make sure
      that the portability glue works for their machine), it mostly
      wastes time for development testing (as most developers aren't
      making any of the major changes that would cause gnulib tests
      to alter behavior).  Thus, it pays to make the tests optional
      at configure time, defaulting to off for development, on for
      tarballs, with autobuilders requesting it to be on.  It also
      helps to allow a make-time override, via VIR_TEST_EXPENSIVE=[01]
      (much the way automake sets up V=[01] for overriding the configure
      time default of how verbose to be).
      
      Automake has some pretty hard-coded magic with regards to the
      TESTS variable; I had quite a job figuring out how to keep
      'make distcheck' passing regardless of the configure option
      setting in use, while still disabling the tests at runtime
      when I did not configure them on and did not use the override
      variable.  Thankfully, we require GNU make, which lets me
      hide some information from Automake's magic handling of TESTS.
      
      * bootstrap.conf (bootstrap_epilogue): Munge gnulib test variable.
      * configure.ac (--enable-expensive-tests): Add new enable switch.
      (VIR_TEST_EXPENSIVE_DEFAULT, WITH_EXPENSIVE_TESTS): Set new
      witnesses.
      * gnulib/tests/Makefile.am (TESTS): Make tests conditional on
      configure settings and the VIR_TEST_EXPENSIVE variable.
      * tests/Makefile.am (TESTS_ENVIRONMENT): Expose VIR_TEST_EXPENSIVE
      to all tests.
      * autobuild.sh: Enable all tests during autobuilds.
      * libvirt.spec.in (%configure): Likewise.
      * mingw-libvirt.spec.in (%mingw_configure): Likewise.
      * docs/hacking.html.in: Document the option.
      * HACKING: Regenerate.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      70363ea9
  16. 12 8月, 2013 1 次提交
    • E
      build: avoid -lgcrypt with newer gnutls · 6094b1ff
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=951637
      
      Newer gnutls uses nettle, rather than gcrypt, which is a lot nicer
      regarding initialization.  Yet we were unconditionally initializing
      gcrypt even when gnutls wouldn't be using it, and having two crypto
      libraries linked into libvirt.so is pointless, but mostly harmless
      (it doesn't crash, but does interfere with certification efforts).
      
      There are three distinct version ranges to worry about when
      determining which crypto lib gnutls uses, per these gnutls mails:
      2.12: http://lists.gnu.org/archive/html/gnutls-devel/2011-03/msg00034.html
      3.0: http://lists.gnu.org/archive/html/gnutls-devel/2011-07/msg00035.html
      
      If pkg-config can prove version numbers and/or list the crypto
      library used for static linking, we have our proof; if not, it
      is safer (even if pointless) to continue to use gcrypt ourselves.
      
      * configure.ac (WITH_GNUTLS): Probe whether to add -lgcrypt, and
      define a witness WITH_GNUTLS_GCRYPT.
      * src/libvirt.c (virTLSMutexInit, virTLSMutexDestroy)
      (virTLSMutexLock, virTLSMutexUnlock, virTLSThreadImpl)
      (virGlobalInit): Honor the witness.
      * libvirt.spec.in (BuildRequires): Make gcrypt usage conditional,
      no longer needed in Fedora 19.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      6094b1ff
  17. 09 8月, 2013 1 次提交
    • E
      build: more workarounds for if_bridge.h · 70024dc9
      Eric Blake 提交于
      This is a second attempt at fixing the problem first attempted
      in commit 2df8d991; basically undoing the fact that it was
      reverted in commit 43cee32f, plus fixing two more issues: the
      code in configure.ac has to EXACTLY match virnetdevbridge.c
      with regards to declaring in6 types before using if_bridge.h,
      and the fact that RHEL 5 has even more conflicts:
      
      In file included from util/virnetdevbridge.c:49:
      /usr/include/linux/in6.h:47: error: conflicting types for 'in6addr_any'
      /usr/include/netinet/in.h:206: error: previous declaration of 'in6addr_any' was here
      /usr/include/linux/in6.h:49: error: conflicting types for 'in6addr_loopback'
      /usr/include/netinet/in.h:207: error: previous declaration of 'in6addr_loopback' was here
      
      The rest of this commit message borrows from the original try
      of 2df8d991:
      
      A fresh checkout on a RHEL 6 machine with these packages:
      kernel-headers-2.6.32-405.el6.x86_64
      glibc-2.12-1.128.el6.x86_64
      failed to configure with this message:
      checking for linux/if_bridge.h... no
      configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
      
      Digging in config.log, we see that the problem is identical to
      what we fixed earlier in commit d12c2811:
      
      configure:98831: checking for linux/if_bridge.h
      configure:98853: gcc -std=gnu99 -c -g -O2  conftest.c >&5
      In file included from /usr/include/linux/if_bridge.h:17,
                       from conftest.c:559:
      /usr/include/linux/in6.h:31: error: redefinition of 'struct in6_addr'
      /usr/include/linux/in6.h:48: error: redefinition of 'struct sockaddr_in6'
      /usr/include/linux/in6.h:56: error: redefinition of 'struct ipv6_mreq'
      configure:98860: $? = 1
      
      I had not hit it earlier because I was using incremental builds,
      where config.cache had shielded me from the kernel-headers breakage.
      
      * configure.ac (if_bridge.h): Avoid conflicting type definitions.
      * src/util/virnetdevbridge.c (includes): Also sanitize for RHEL 5.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      70024dc9
  18. 07 8月, 2013 2 次提交
    • D
      Revert "build: fix configure detection of if_bridge.h on RHEL 6" · 43cee32f
      Daniel P. Berrange 提交于
      This reverts commit 2df8d991.
      
      The change breaks configure on any recent Fedora platform
      43cee32f
    • E
      build: fix configure detection of if_bridge.h on RHEL 6 · 2df8d991
      Eric Blake 提交于
      A fresh checkout on a RHEL 6 machine with these packages:
      kernel-headers-2.6.32-405.el6.x86_64
      glibc-2.12-1.128.el6.x86_64
      failed to configure with this message:
      checking for linux/if_bridge.h... no
      configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
      
      Digging in config.log, we see that the problem is identical to
      what we fixed earlier in commit d12c2811:
      
      configure:98831: checking for linux/if_bridge.h
      configure:98853: gcc -std=gnu99 -c -g -O2  conftest.c >&5
      In file included from /usr/include/linux/if_bridge.h:17,
                       from conftest.c:559:
      /usr/include/linux/in6.h:31: error: redefinition of 'struct in6_addr'
      /usr/include/linux/in6.h:48: error: redefinition of 'struct sockaddr_in6'
      /usr/include/linux/in6.h:56: error: redefinition of 'struct ipv6_mreq'
      configure:98860: $? = 1
      
      I had not hit it earlier because I was using incremental builds,
      where config.cache had shielded me from the kernel-headers breakage.
      
      * configure.ac (if_bridge.h): Avoid conflicting type definitions.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      2df8d991
  19. 01 8月, 2013 1 次提交
  20. 30 7月, 2013 2 次提交
    • D
      Delete obsolete / unused python test files · 5bb2a245
      Daniel P. Berrange 提交于
      The python/tests directory contains a number of so called
      "tests" for the python API. These are all hardcoded to
      look for Xen and cannot be run in any automated fashion,
      and no one is ever manually running them. Given that they
      don't meaningully contribute to the test coverage, delete
      them.
      
      For some reason these tests were also copied into the
      filesystem as part of 'make install'. The change to the
      RPM in commit 3347a420
      caused a build failure, since it removed the code which
      deleted these installed tests.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      5bb2a245
    • D
      Release of libvirt-1.1.1 · e9b8c9dc
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in: update for the release
      * po/*.po*: update localizations and regenerate
      e9b8c9dc
  21. 24 7月, 2013 1 次提交
    • R
      Fix link_addr detection · 7e120829
      Roman Bogorodskiy 提交于
      link_addr detection in configure always reports that
      link_addr is missing because it uses link_addr(NULL, NULL) in
      AC_LINK_IFELSE check with limited set of headers that doesn't
      define NULL.
      
      Fix by replacing 'NULL' with just '0'.
      7e120829
  22. 19 7月, 2013 1 次提交
  23. 18 7月, 2013 1 次提交
  24. 12 7月, 2013 1 次提交
    • E
      util: make virSetUIDGID async-signal-safe · ee777e99
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=964358
      
      POSIX states that multi-threaded apps should not use functions
      that are not async-signal-safe between fork and exec, yet we
      were using getpwuid_r and initgroups.  Although rare, it is
      possible to hit deadlock in the child, when it tries to grab
      a mutex that was already held by another thread in the parent.
      I actually hit this deadlock when testing multiple domains
      being started in parallel with a command hook, with the following
      backtrace in the child:
      
       Thread 1 (Thread 0x7fd56bbf2700 (LWP 3212)):
       #0  __lll_lock_wait ()
           at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
       #1  0x00007fd5761e7388 in _L_lock_854 () from /lib64/libpthread.so.0
       #2  0x00007fd5761e7257 in __pthread_mutex_lock (mutex=0x7fd56be00360)
           at pthread_mutex_lock.c:61
       #3  0x00007fd56bbf9fc5 in _nss_files_getpwuid_r (uid=0, result=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, errnop=0x7fd56bbf25b8)
           at nss_files/files-pwd.c:40
       #4  0x00007fd575aeff1d in __getpwuid_r (uid=0, resbuf=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, result=0x7fd56bbf0cb0)
           at ../nss/getXXbyYY_r.c:253
       #5  0x00007fd578aebafc in virSetUIDGID (uid=0, gid=0) at util/virutil.c:1031
       #6  0x00007fd578aebf43 in virSetUIDGIDWithCaps (uid=0, gid=0, capBits=0,
           clearExistingCaps=true) at util/virutil.c:1388
       #7  0x00007fd578a9a20b in virExec (cmd=0x7fd55c231f10) at util/vircommand.c:654
       #8  0x00007fd578a9dfa2 in virCommandRunAsync (cmd=0x7fd55c231f10, pid=0x0)
           at util/vircommand.c:2247
       #9  0x00007fd578a9d74e in virCommandRun (cmd=0x7fd55c231f10, exitstatus=0x0)
           at util/vircommand.c:2100
       #10 0x00007fd56326fde5 in qemuProcessStart (conn=0x7fd53c000df0,
           driver=0x7fd55c0dc4f0, vm=0x7fd54800b100, migrateFrom=0x0, stdin_fd=-1,
           stdin_path=0x0, snapshot=0x0, vmop=VIR_NETDEV_VPORT_PROFILE_OP_CREATE,
           flags=1) at qemu/qemu_process.c:3694
       ...
      
      The solution is to split the work of getpwuid_r/initgroups into the
      unsafe portions (getgrouplist, called pre-fork) and safe portions
      (setgroups, called post-fork).
      
      * src/util/virutil.h (virSetUIDGID, virSetUIDGIDWithCaps): Adjust
      signature.
      * src/util/virutil.c (virSetUIDGID): Add parameters.
      (virSetUIDGIDWithCaps): Adjust clients.
      * src/util/vircommand.c (virExec): Likewise.
      * src/util/virfile.c (virFileAccessibleAs, virFileOpenForked)
      (virDirCreate): Likewise.
      * src/security/security_dac.c (virSecurityDACSetProcessLabel):
      Likewise.
      * src/lxc/lxc_container.c (lxcContainerSetID): Likewise.
      * configure.ac (AC_CHECK_FUNCS_ONCE): Check for setgroups, not
      initgroups.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ee777e99
  25. 10 7月, 2013 1 次提交
  26. 01 7月, 2013 1 次提交
    • D
      Release of libvirt-1.1.0 · 034d3229
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: updated for the release
      * po/*.po*: updated localizations and regenerated
      034d3229
  27. 21 6月, 2013 1 次提交
  28. 12 6月, 2013 1 次提交
  29. 03 6月, 2013 1 次提交
    • D
      Release of libvirt 1.0.6 · 4497ef50
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: pull localization updates and regenerate the po
      4497ef50
  30. 29 5月, 2013 1 次提交
    • E
      build: fix build with newer gnutls · 7d21d6b6
      Eric Blake 提交于
      Building with gnutls 3.2.0 (such as shipped with current cygwin) fails
      with:
      
      rpc/virnettlscontext.c: In function 'virNetTLSSessionGetKeySize':
      rpc/virnettlscontext.c:1358:5: error: implicit declaration of function 'gnutls_cipher_get_key_size' [-Wimplicit-function-declaration]
      
      Yeah, it's stupid that gnutls broke API by moving their declaration
      into a new header without including that header from the old one,
      but it's easy enough to work around, all without breaking on gnutls
      1.4.1 (hello RHEL 5) that lacked the new header.
      
      * configure.ac (gnutls): Check for <gnutls/crypto.h>.
      * src/rpc/virnettlscontext.c (includes): Include additional header.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7d21d6b6
  31. 21 5月, 2013 2 次提交
    • E
      maint: follow recommended practice for using LGPL · de483052
      Eric Blake 提交于
      https://www.gnu.org/licenses/gpl-howto.html states:
      
      You should also include a copy of the license itself somewhere in the
      distribution of your program. All programs, whether they are released
      under the GPL or LGPL, should include the text version of the GPL. In
      GNU programs the license is usually in a file called COPYING.
      
      If you are releasing your program under the LGPL, you should also
      include the text version of the LGPL, usually in a file called
      COPYING.LESSER. Please note that, since the LGPL is a set of
      additional permissions on top of the GPL, it's important to include
      both licenses so users have all the materials they need to understand
      their rights.
      
      * configure.ac (COPYING): No more games with non-git file.
      * COPYING: New file, copied from gnulib.
      * COPYING.LIB: Rename...
      * COPYING.LESSER: ...to this.
      * .gitignore: Track licenses in git.
      * cfg.mk (exclude_file_name_regexp--sc_copyright_address): Tweak
      rule.
      * libvirt.spec.in (daemon, client, python): Reflect rename.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      de483052
    • E
      maint: use LGPL correctly · d7f53c7b
      Eric Blake 提交于
      Several files called out COPYING or COPYING.LIB instead of using
      the normal boilerplate.  It's especially important that we don't
      call out COPYING from an LGPL file, since COPYING is traditionally
      used for the GPL.  A few files were lacking copyright altogether.
      
      * src/rpc/gendispatch.pl: Add missing copyright.
      * Makefile.nonreentrant: Likewise.
      * src/check-symfile.pl: Likewise.
      * src/check-symsorting.pl: Likewise.
      * src/driver.h: Likewise.
      * src/internal.h: Likewise.
      * tools/libvirt-guests.sh.in: Likewise.
      * tools/virt-pki-validate.in: Mention copyright in comment, not just code.
      * tools/virt-sanlock-cleanup.in: Likewise.
      * src/rpc/genprotocol.pl: Spell out license terms.
      * src/xen/xend_internal.h: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * Makefile.am: Likewise.
      * daemon/Makefile.am: Likewise.
      * docs/Makefile.am: Likewise.
      * docs/schemas/Makefile.am: Likewise.
      * examples/apparmor/Makefile.am: Likewise.
      * examples/domain-events/events-c/Makefile.am: Likewise.
      * examples/dominfo/Makefile.am: Likewise.
      * examples/domsuspend/Makefile.am: Likewise.
      * examples/hellolibvirt/Makefile.am: Likewise.
      * examples/openauth/Makefile.am: Likewise.
      * examples/python/Makefile.am: Likewise.
      * examples/systemtap/Makefile.am: Likewise.
      * examples/xml/nwfilter/Makefile.am: Likewise.
      * gnulib/lib/Makefile.am: Likewise.
      * gnulib/tests/Makefile.am: Likewise.
      * include/Makefile.am: Likewise.
      * include/libvirt/Makefile.am: Likewise.
      * python/Makefile.am: Likewise.
      * python/tests/Makefile.am: Likewise.
      * src/Makefile.am: Likewise.
      * tests/Makefile.am: Likewise.
      * tools/Makefile.am: Likewise.
      * configure.ac: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      d7f53c7b