1. 18 5月, 2010 16 次提交
    • J
      ebiptablesWriteToTempFile: don't close a negative file descriptor · 0058184c
      Jim Meyering 提交于
      * src/nwfilter/nwfilter_ebiptables_driver.c (ebiptablesWriteToTempFile):
      Skip the close if "fd" is negative.
      0058184c
    • D
      Protect against NULL pointer flaws in monitor usage · 31e29fe5
      Daniel P. Berrange 提交于
      History has shown that there are frequent bugs in the QEMU driver
      code leading to the monitor being invoked with a NULL pointer.
      Although the QEMU driver code should always report an error in
      this case before invoking the monitor, as a safety net put in a
      generic check in the monitor code entry points.
      
      * src/qemu/qemu_monitor.c: Safety net to check for NULL monitor
        object
      31e29fe5
    • D
      Fix multiple potential NULL pointer references in monitor usage · c4b2a939
      Daniel P. Berrange 提交于
      Any method which intends to invoke a monitor command must have
      a check for virDomainObjIsActive() before using the monitor to
      ensure that priv->mon != NULL.
      
      There is one subtle edge case in this though. If a method invokes
      multiple monitor commands, and calls qemuDomainObjExitMonitor()
      in between two of these commands then there is no guarentee that
      priv->mon != NULL anymore. This is because the QEMU process may
      exit or die at any time, and because qemuDomainObjEnterMonitor()
      releases the lock on virDomainObj, it is possible for the background
      thread to close the monitor handle and thus qemuDomainObjExitMonitor
      will release the last reference allowing priv->mon to become NULL.
      
      This affects several methods, most notably migration but also some
      hotplug methods. This patch takes a variety of approaches to solve
      the problem, depending on the particular usage scenario. Generally
      though it suffices to add an extra virDomainObjIsActive() check
      if qemuDomainObjExitMonitor() was called during the method.
      
      * src/qemu/qemu_driver.c: Fix multiple potential NULL pointer flaws
        in usage of the monitor
      c4b2a939
    • J
      maint: add more free-like functions to the list and deal with fallout · a986892e
      Jim Meyering 提交于
      * cfg.mk (useless_free_options): Add many vir*Free* function names,
      and then remove the useless if-before-free tests exposed by running
      make syntax-check.
      * src/conf/interface_conf.c (virInterfaceDefFree): Remove useless "if".
      (virInterfaceAssignDef): Likewise.
      * src/conf/network_conf.c (virNetworkAssignDef): Likewise.
      * src/conf/storage_conf.c (virStoragePoolObjAssignDef): Likewise.
      * src/node_device/node_device_hal.c (dev_create): Likewise.
      * src/security/virt-aa-helper.c (vahDeinit): Likewise.
      * src/test/test_driver.c (testNodeDeviceCreateXML): Likewise.
      * src/util/conf.c (virConfSetValue): Likewise.
      a986892e
    • J
      maint: add virCgroupFree to the list of free-like functions · 933522a3
      Jim Meyering 提交于
      This makes the useless-if-before-free test in maint.mk spot
      uses of virCgroupFree just like it does for free and the other
      listed functions.
      * cfg.mk (useless_free_options): Add virCgroupFree.
      Prompted by suggestion from Eric Blake.
      933522a3
    • J
      qemudDomainSetVcpus: avoid NULL-deref on failed uuid look-up · 20701b17
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainSetVcpus): Upon look-up failure,
      i.e., vm==NULL, goto cleanup, rather than to "endjob", superficially
      since the latter would dereference vm, but more fundamentally because
      we certainly don't want to call qemuDomainObjEndJob before we've
      even attempted qemuDomainObjBeginJob.
      20701b17
    • J
      lxcFreezeContainer: avoid test-after-deref of never-NULL pointer · 93fedcf2
      Jim Meyering 提交于
      * src/lxc/lxc_driver.c (lxcFreezeContainer): Remove test-after-deref.
      Correct indentation in expression.
      93fedcf2
    • M
      Add CIFS to the list of network file systems · 61fb6979
      Matthias Bolte 提交于
      ESX supports NFS and CIFS. The ESX storage driver will reflect this.
      61fb6979
    • M
      Add VIR_STORAGE_POOL_INACCESSIBLE to denote inaccessible storage pools · 32d9e070
      Matthias Bolte 提交于
      This status will be used by the ESX storage driver.
      
      For example a running NFS pool is inaccessible when the NFS server is
      currently unreachable.
      32d9e070
    • E
      qemu_conf: fix flag value · f30ccb24
      Eric Blake 提交于
      (gdb) p/x QEMUD_CMD_FLAG_VNET_HOST
      $7 = 0xffffffff80000000
      
      Oops - that meant we were incorrectly setting QEMU_CMD_FLAG_RTC_TD_HACK
      for qemu-kvm-0.12.3 (and probably botching a few other settings as well).
      
      Fixes Red Hat BZ#592070
      
      * src/qemu/qemu_conf.h (QEMUD_CMD_FLAG_VNET_HOST): Avoid sign
      extension.
      * tests/qemuhelpdata/qemu-kvm-0.12.3: New file.
      * tests/qemuhelptest.c (mymain): Add another case.
      f30ccb24
    • C
      qemu: Clarify a couple error messages · 07c621d0
      Cole Robinson 提交于
      A fedora translator filed:
      
      https://bugzilla.redhat.com/show_bug.cgi?id=580816
      
      Pointing out these two error messages as unclear: "write save" sounds
      like a typo without context, and lack of a colon made the second message
      difficult to parse.
      07c621d0
    • E
      virFileResolveLink: fix return value · d533a98e
      Eric Blake 提交于
      virFileResolveLink was returning a positive value on error,
      thus confusing callers that assumed failure was < 0.  The
      confusion is further evidenced by callers that would have
      ended up calling virReportSystemError with a negative value
      instead of a valid errno.
      
      Fixes Red Hat BZ #591363.
      
      * src/util/util.c (virFileResolveLink): Live up to documentation.
      * src/qemu/qemu_security_dac.c
      (qemuSecurityDACRestoreSecurityFileLabel): Adjust callers.
      * src/security/security_selinux.c
      (SELinuxRestoreSecurityFileLabel): Likewise.
      * src/storage/storage_backend_disk.c
      (virStorageBackendDiskDeleteVol): Likewise.
      d533a98e
    • C
      tests: Skip daemon-conf test if dir exceeds UNIX_PATH_MAX · df5944ff
      Cole Robinson 提交于
      The max path length for unix sockets is pretty small (108, see man 7 unix).
      If 'make check' is run from a directory that exceeds this, one of the tests
      will fail, and in such a way that requires manually editting the test to
      determine why.
      
      There are certainly other ways to handle this, but I've chosen just to skip
      the offending test if we will exceed the length limitation.
      
      v2: Drop bashism, use test infrastructure to warn and skip
      df5944ff
    • C
      pci: Give an explicit error if device not found · 5679c844
      Cole Robinson 提交于
      v2: Use intended F_OK. Drop devdir param, just check dev->path for device
      existence.
      
      v3: Use virReportSystemError, include dev->path in error message.
      5679c844
    • E
      build: fix cygwin build, correctly this time · b0aaed65
      Eric Blake 提交于
      Fix the cygwin regression introduced in commit 48445ccf, but
      without repeating the fresh build regression of commit
      2d550542.
      
      * src/Makefile.am (libvirt_test_la_LIBADD): Split out subset of
      locally-built libraries...
      (libvirt_test_la_BUILT_LIBADD): ...into new variable.
      (libvirt_test_la_DEPENDENCIES): Depend only on the subset that
      automake would have given us for free if we didn't have to add our
      own extra file.
      b0aaed65
    • J
      umlAutostartDomain: avoid NULL-deref upon virGetLastError failure · 8e8bda26
      Jim Meyering 提交于
      * src/uml/uml_driver.c (umlAutostartDomain): Handle a NULL return
      from virGetLastError.
      8e8bda26
  2. 17 5月, 2010 7 次提交
    • E
      build: fix up some compiler flags · 6e5b5bbc
      Eric Blake 提交于
      Matthias noted that the line:
      virt_aa_helper_LDFLAGS = $(WARN_CFLAGS)
      looks inconsistent, so I did an audit.
      
      Currently, the set of compiler warning flags passed to gcc as $CC are
      equally permitted as the set of linker flags passed to gcc as $LD, so
      there was no problem with that usage.  But if we ever get in a
      situation where $CC and $LD treat particular flags differently, using
      the right variable form will make it easier.
      
      In the process, I spotted a couple of typos that were omitting useful
      flags, as well as specifying a -l under the wrong variable.
      
      * acinclude.m4 (LIBVIRT_COMPILE_WARNINGS): Define WARN_LDFLAGS as
      an alias for WARN_CFLAGS.
      * tools/Makefile.am (virsh_LDFLAGS): Use more canonical spelling.
      * proxy/Makefile.am (libvirt_proxy_LDFLAGS): Likewise. Move
      library...
      (libvirt_proxy_LDADD): ...here.
      * src/Makefile.am (virt_aa_helper_LDFLAGS): Use more canonical
      spelling of WARN_LDFLAGS.
      (libvirt_parthelper_LDFLAGS, libvirt_lxc_LDFLAGS): Likewise.  Use
      correct spelling of COVERAGE_LDFLAGS.
      Reported by Matthias Bolte.
      6e5b5bbc
    • J
      build: avoid compile failure on linux kernels older than 2.6.19 · 0641f0f7
      Jim Meyering 提交于
      * configure.ac: Check for <linux/magic.h>.
      * src/util/storage_file.c: Include <linux/magic.h> only if present.
      Linux kernels prior to 2.6.19 lacked it.
      [__linux__] (NFS_SUPER_MAGIC): Define if not already defined.
      0641f0f7
    • J
      x86ModelHasFeature: avoid NULL-dereference for unmatched CPU "feature" · 258d59cf
      Jim Meyering 提交于
      * src/cpu/cpu_x86.c (x86ModelHasFeature): Do not dereference the pointer
      returned by x86cpuidFind without first ensuring it is non-NULL.
      258d59cf
    • C
      qemu: Report cmdline output if VM dies early · 83be6403
      Cole Robinson 提交于
      qemuReadLogOutput early VM death detection is racy and won't always work.
      Startup then errors when connecting to the VM monitor. This won't report
      the emulator cmdline output which is typically the most useful diagnostic.
      
      Check if the VM has died at the very end of the monitor connection step,
      and if so, report the cmdline output.
      
      See also: https://bugzilla.redhat.com/show_bug.cgi?id=581381
      83be6403
    • C
      qemu: Fix previous commit, use comparision in if() · d536f6b1
      Cole Robinson 提交于
      d536f6b1
    • J
      qemu_driver: avoid NULL dereference · 560758c9
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainStart): After setting vm to NULL,
      goto cleanup, rather than dereferencing the NULL pointer.
      560758c9
    • D
      Remove debugging fprintf() calls · 2d665c9e
      Daniel P. Berrange 提交于
      * src/qemu/qemu_driver.c: Remove debugging fprintf() calls
        accidentally left in code
      2d665c9e
  3. 15 5月, 2010 5 次提交
    • J
      qemudDomainSetVcpus: avoid NULL-deref · b48fb801
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainSetVcpus): Avoid NULL-deref
      upon unknown UUID.  Call qemuDomainObjBeginJob(vm) only after
      ensuring that vm != NULL, not before.  This potential NULL-deref
      was introduced by commit 2c555d87.
      b48fb801
    • E
      Revert "build: fix cygwin build" · 39b3845f
      Eric Blake 提交于
      This reverts commit 2d550542.
      
      The patch worked for incremental builds, but broke fresh
      builds, because it interfered with automake's automatic
      dependency generation.  Until I figure out how to make
      automake do what we want, I'd rather leave cygwin broken
      but fresh Linux builds working.
      39b3845f
    • E
      build: fix cygwin build · 2d550542
      Eric Blake 提交于
      make[3]: *** No rule to make target `-lxml2', needed by `libvirt.la'.  Stop.
      
      Due to treating the wrong string as a dependency.
      
      * src/Makefile.am (libvirt_la_DEPENDENCIES): Depend only on
      locally-built file, not on strings that might resolve as '-lxml2'.
      2d550542
    • S
      nwfilter: Add missing driver lock in qemu driver · ba99a1b6
      Stefan Berger 提交于
      This adds a missing driver lock in the qemu driver to protect
      the list of domains.
      ba99a1b6
    • R
      Fix a misuse of virAsprintf in qemudDomainMemoryPeek · d6644013
      Ryota Ozaki 提交于
      The code specifies driver->cacheDir as the format string,
      but it usually doesn't contain '%s', so the subsequent
      argument, "/qemu.mem.XXXXXX", is always ignored.
      
      The patch fixes the misuse.
      d6644013
  4. 14 5月, 2010 5 次提交
    • D
      Make domain save work when dynamic_ownership=0 · de4d7087
      Daniel P. Berrange 提交于
      Setting dynamic_ownership=0 in /etc/libvirt/qemu.conf prevents
      libvirt's DAC security driver from setting uid/gid on disk
      files when starting/stopping QEMU, allowing the admin to manage
      this manually. As a side effect it also stopped setting of
      uid/gid when saving guests to a file, which completely breaks
      save when QEMU is running non-root. Thus saved state labelling
      code must ignore the dynamic_ownership parameter
      
      * src/qemu/qemu_security_dac.c: Ignore dynamic_ownership=0 when
        doing save/restore image labelling
      de4d7087
    • D
      Don't reset user/group/security label on shared filesystems during migrate · 02ddaddf
      Daniel P. Berrange 提交于
      When QEMU runs with its disk on NFS, and as a non-root user, the
      disk is chownd to that non-root user. When migration completes
      the last step is shutting down the QEMU on the source host. THis
      normally resets user/group/security label. This is bad when the
      VM was just migrated because the file is still in use on the dest
      host. It is thus neccessary to skip the reset step for any files
      found to be on a shared filesystem
      
      * src/libvirt_private.syms: Export virStorageFileIsSharedFS
      * src/util/storage_file.c, src/util/storage_file.h: Add a new
        method virStorageFileIsSharedFS() to determine if a file is
        on a shared filesystem (NFS, GFS, OCFS2, etc)
      * src/qemu/qemu_driver.c: Tell security driver not to reset
        disk labels on migration completion
      * src/qemu/qemu_security_dac.c, src/qemu/qemu_security_stacked.c,
        src/security/security_selinux.c, src/security/security_driver.h,
        src/security/security_apparmor.c: Add ability to skip disk
        restore step for files on shared filesystems.
      02ddaddf
    • D
      Fix handling of disk backing stores with cgroups · 117d04fb
      Daniel P. Berrange 提交于
      The cgroups ACL code was only allowing the primary disk image.
      It is possible to chain images together, so we need to search
      for backing stores and add them to the ACL too. Since the ACL
      only handles block devices, we ignore the EINVAL we get from
      plain files. In addition it was missing code to teardown the
      cgroup when hot-unplugging a disk
      
      * src/qemu/qemu_driver.c: Allow backing stores in cgroup ACLs
        and add missing teardown code in unplug path
      117d04fb
    • D
      Fix possible crash in handling IO Error event · abb76942
      Daniel P. Berrange 提交于
      If the IO error event does not include a reason, then there
      is a possible crash dispatching the event
      
      * src/conf/domain_event.c: Missing check for a NULL reason before
        strduping allows for a crash
      abb76942
    • D
      Add support for NIC hotplug using netdev_add in QEMU · ff45b4c2
      Daniel P. Berrange 提交于
      QEMU is gaining a new monitor command netdev_add for hotplugging
      NICs using the netdev backend code. We already support this on
      the command this, though it is disabled. This adds support for
      hotplug too, also to remain disabled until 0.13 QEMU is released
      
      * src/qemu/qemu_driver.c: Support netdev hotplug for NICs
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h: Add
        support for netdev_add and netdev_remove commands
      ff45b4c2
  5. 13 5月, 2010 1 次提交
  6. 12 5月, 2010 6 次提交
    • J
      Fix monitor ref counting when adding event handle · d84bb6d6
      Jiri Denemark 提交于
      When closing a monitor using qemuMonitorClose(), we are aware of
      the possibility the monitor is still being used somewhere:
      
          /* NB: ordinarily one might immediately set mon->watch to -1
           * and mon->fd to -1, but there may be a callback active
           * that is still relying on these fields being valid. So
           * we merely close them, but not clear their values and
           * use this explicit 'closed' flag to track this state */
      
      but since we call virEventAddHandle() on that monitor without increasing
      its ref counter, the monitor is still freed which makes possible users
      of it quite unhappy. The unhappiness can lead to a hang if qemuMonitorIO
      tries to lock mutex which no longer exists.
      d84bb6d6
    • J
      Remove watches before calling REMOTE_PROC_CLOSE · 6ef9d9da
      Jiri Denemark 提交于
      First calling REMOTE_PROC_CLOSE and then removing watches might lead to
      a hang as HANGUP event can be triggered before the watches are actually
      removed but after virConnectPtr is already freed. As a result of that
      remoteDomainEventFired() would try to lock uninitialized mutex, which
      would hang for ever.
      6ef9d9da
    • J
      tests: use GPLv2+, not GPLv3 · c2c4abb4
      Jim Meyering 提交于
      * tests/cpuset: Change from GPLv3 to GPLv2+
      * tests/read-bufsiz: Likewise.
      * tests/read-non-seekable: Likewise.
      * tests/start: Likewise.
      * tests/undefine: Likewise.
      * tests/vcpupin: Likewise.
      * tests/virsh-all: Likewise.
      * tests/virsh-schedinfo: Likewise.
      * tests/virsh-synopsis: Likewise.
      c2c4abb4
    • E
      libvirt_proxy: link with -lpthread if needed · ff1d6f85
      Eric Blake 提交于
      Continuation of earlier patches to fix LIB_PTHREAD, only
      triggered by ./configure --with-xen-proxy (a la autobuild.sh).
      
      * proxy/Makefile.am (libvirt_proxy_LDADD): Add LIB_PTHREAD.
      ff1d6f85
    • C
      node_device: udev: Fix PCI product/vendor swappage · 74c7a346
      Cole Robinson 提交于
      Product and vendor values were swapped in the XML, which made virt-manager
      PCI device listing kinda useless.
      74c7a346
    • E
      build: update gnulib · e8a1a730
      Eric Blake 提交于
      * .gnulib: Update to latest.
      * bootstrap.conf (gnulib_modules): Import netdb.
      * src/esx/esx_util.c (AI_ADDRCONFIG): Rely on gnulib.
      * src/remote/remote_driver.c (AI_ADDRCONFIG): Likewise.
      * tools/virsh.c (WEXITSTATUS, O_SYNC): Likewise.
      e8a1a730