1. 14 6月, 2012 20 次提交
    • L
      util: function to get local nl_pid used by netlink event socket · ce5d17b3
      Laine Stump 提交于
      This value will be needed to set the src_pid when sending netlink
      messages to lldpad. It is part of the solution to:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=816465
      
      Note that libnl's port generation algorithm guarantees that the
      nl_socket_get_local_port() will always be > 0 (since it is "getpid() +
      (n << 22>" where n is always < 1024), so it is okay to cast the
      uint32_t to int (thus allowing us to use -1 as an error sentinel).
      (cherry picked from commit c99e9375)
      ce5d17b3
    • L
      util: allow specifying both src and dst pid in virNetlinkCommand · 443e37da
      Laine Stump 提交于
      Until now, virNetlinkCommand has assumed that the nl_pid in the source
      address of outgoing netlink messages should always be the return value
      of getpid(). In most cases it actually doesn't matter, but in the case
      of communication with lldpad, lldpad saves this info and later uses it
      to send netlink messages back to libvirt. A recent patch to fix Bug
      816465 changed the order of the universe such that the netlink event
      service socket is no longer bound with nl_pid == getpid(), so lldpad
      could no longer send unsolicited messages to libvirtd. Adding src_pid
      as an argument to virNetlinkCommand() is the first step in notifying
      lldpad of the proper address of the netlink event service socket.
      (cherry picked from commit cca7bb1f)
      443e37da
    • L
      util: fix libvirtd startup failure due to netlink error · 3cc52164
      Laine Stump 提交于
      This is part of the solution to the problem detailed in:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=816465
      
      and further detailed in
      
        https://www.redhat.com/archives/libvir-list/2012-May/msg00202.htm
      
      A short explanation is included in the comments of the patch itself.
      
      Note that this patch by itself breaks communication between lldpad and
      libvirtd, so the other 3 patches in the series must be applied at the
      same time as this patch.
      (cherry picked from commit 64297313)
      
      Conflicts:
      
      	daemon/libvirtd.c
      3cc52164
    • G
      qemu: call usb search function for hostdev initialization and hotplug · d617c987
      Guannan Ren 提交于
      src/qemu/qemu_hostdev.c:
      refactor qemuPrepareHostdevUSBDevices function, make it focus on
      adding usb device to activeUsbHostdevs after check. After that,
      the usb hotplug function qemuDomainAttachHostDevice also could use
      it.
      expand qemuPrepareHostUSBDevices to perform the usb search,
      rollback on failure.
      
      src/qemu/qemu_hotplug.c:
      If there are multiple usb devices available with same vendorID and productID,
      but with different value of "bus, device", we give an error to let user
      use <address> to specify the desired one.
      (cherry picked from commit 05abd150)
      d617c987
    • G
      usb: create functions to search usb device accurately · 18c14916
      Guannan Ren 提交于
      usbFindDevice():get usb device according to
                      idVendor, idProduct, bus, device
                      it is the exact match of the four parameters
      
      usbFindDeviceByBus():get usb device according to bus, device
                        it returns only one usb device same as usbFindDevice
      
      usbFindDeviceByVendor():get usb device according to idVendor,idProduct
                           it probably returns multiple usb devices.
      
      usbDeviceSearch(): a helper function to do the actual search
      (cherry picked from commit 9914477e)
      18c14916
    • C
      rpm: Handle different source URLs for maint releases · 05aa969f
      Cole Robinson 提交于
      (cherry picked from commit f4345ac2)
      
      Conflicts:
      
      	libvirt.spec.in
      05aa969f
    • J
      qemu: Emit compatible XML when migrating a domain · f6936215
      Jiri Denemark 提交于
      When we added the default USB controller into domain XML, we efficiently
      broke migration to older versions of libvirt that didn't support USB
      controllers at all (0.9.4 and earlier) even for domains that don't use
      anything that the older libvirt can't provide. We still want to present
      the default USB controller in any XML seen by a user/app but we can
      safely remove it from the domain XML used during migration. If we are
      migrating to a new enough libvirt, it will add the controller XML back,
      while older libvirt won't be confused with it although it will still
      tell qemu to create the controller.
      
      Similar approach can be used in the future whenever we find out we
      always enabled some kind of device without properly advertising it in
      domain XML.
      (cherry picked from commit 409b5f54)
      f6936215
    • J
      qemu: Don't use virDomainDefFormat* directly · 68563e7a
      Jiri Denemark 提交于
      Always use appropriate qemuDomain{,Def}Format wrapper since it may do
      some additional magic based on the flags.
      (cherry picked from commit cd603008)
      68563e7a
    • E
      qemu: reject blockiotune if qemu too old · b5f86fc0
      Eric Blake 提交于
      Commit 4c82f09e added a capability check for qemu per-device io
      throttling, but only applied it to domain startup.  As mentioned
      in the previous commit (98cec052), the user can still get an 'internal
      error' message during a hotplug attempt, when the monitor command
      doesn't exist.  It is confusing to allow tuning on inactive domains
      only to then be rejected when starting the domain.
      
      * src/qemu/qemu_driver.c (qemuDomainSetBlockIoTune): Reject
      offline tuning if online can't match it.
      (cherry picked from commit 13f9a193)
      b5f86fc0
    • E
      qemu: don't modify domain on failed blockiotune · 282bd9dc
      Eric Blake 提交于
      If you have a qemu build that lacks the blockio tune monitor command,
      then this command:
      
      $ virsh blkdeviotune rhel6u2 hda --total_bytes_sec 1000
      error: Unable to change block I/O throttle
      error: internal error Unexpected error
      
      fails as expected (well, the error message is lousy), but the next
      dumpxml shows that the domain was modified anyway.  Worse, that means
      if you save the domain then restore it, the restore will likely fail
      due to throttling being unsupported, even though no throttling should
      even be active because the monitor command failed in the first place.
      
      * src/qemu/qemu_driver.c (qemuDomainSetBlockIoTune): Check for
      error before making modification permanent.
      (cherry picked from commit 98cec052)
      282bd9dc
    • L
      util: remove error log from stubs of virNetlinkEventServiceStart|Stop · a14f23f0
      Laine Stump 提交于
      These two functions are called from main() on all platforms, and
      always return success on platforms that don't support libnl. They
      still log an error message, though, which doesn't make sense - they
      should just be NOPs on those platforms. (Per a suggestion during
      review, I've turned the logs into debug messages rather than removing
      them completely).
      (cherry picked from commit bae4ff28)
      a14f23f0
    • S
      node_device: fix possible non-terminated string · cd94771b
      Stefan Berger 提交于
      Error: STRING_NULL:
      /libvirt/src/node_device/node_device_linux_sysfs.c:80:
      string_null_argument: Function "saferead" does not terminate string "*buf".
      /libvirt/src/util/util.c:101:
      string_null_argument: Function "read" fills array "*buf" with a non-terminated string.
      /libvirt/src/node_device/node_device_linux_sysfs.c:87:
      string_null: Passing unterminated string "buf" to a function expecting a null-terminated string.
      
      (cherry picked from commit 43d1616f)
      cd94771b
    • S
      uuid: fix possible non-terminated string · cf2d303d
      Stefan Berger 提交于
      Error: STRING_NULL:
      /libvirt/src/util/uuid.c:273:
      string_null_argument: Function "getDMISystemUUID" does not terminate string "*dmiuuid".
      /libvirt/src/util/uuid.c:241:
      string_null_argument: Function "saferead" fills array "*uuid" with a non-terminated string.
      /libvirt/src/util/util.c:101:
      string_null_argument: Function "read" fills array "*buf" with a non-terminated string.
      /libvirt/src/util/uuid.c:274:
      string_null: Passing unterminated string "dmiuuid" to a function expecting a null-terminated string.
      /libvirt/src/util/uuid.c:138:
      var_assign_parm: Assigning: "cur" = "uuidstr". They now point to the same thing.
      /libvirt/src/util/uuid.c:164:
      string_null_sink_loop: Searching for null termination in an unterminated array "cur".
      
      (cherry picked from commit b4586051)
      cf2d303d
    • S
      tests: fix resource leak · 2b25ea3e
      Stefan Berger 提交于
      Error: RESOURCE_LEAK:
      /libvirt/tests/qemuxml2argvtest.c:47:
      alloc_arg: Calling allocation function "virAlloc" on "ret".
      /libvirt/src/util/memory.c:101:
      alloc_fn: Storage is returned from allocation function "calloc".
      /libvirt/src/util/memory.c:101:
      var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /libvirt/tests/qemuxml2argvtest.c:54:
      leaked_storage: Variable "ret" going out of scope leaks the storage it points to.
      
      (cherry picked from commit a01e6721)
      2b25ea3e
    • S
      qemu: fix resource leak · ab26f4e3
      Stefan Berger 提交于
      Error: RESOURCE_LEAK:
      /libvirt/src/qemu/qemu_driver.c:6968:
      alloc_fn: Calling allocation function "calloc".
      /libvirt/src/qemu/qemu_driver.c:6968:
      var_assign: Assigning: "nodeset" =  storage returned from "calloc(1UL, 1UL)".
      /libvirt/src/qemu/qemu_driver.c:6977:
      noescape: Variable "nodeset" is not freed or pointed-to in function "virTypedParameterAssign".
      /libvirt/src/qemu/qemu_driver.c:6997:
      leaked_storage: Variable "nodeset" going out of scope leaks the storage it points to.
      
      (cherry picked from commit c0774482)
      ab26f4e3
    • S
      vmx: fix resource leak · 052ef069
      Stefan Berger 提交于
      Error: RESOURCE_LEAK:
      /libvirt/src/vmx/vmx.c:2431:
      alloc_fn: Calling allocation function "calloc".
      /libvirt/src/vmx/vmx.c:2431:
      var_assign: Assigning: "networkName" =  storage returned from "calloc(1UL, 1UL)".
      /libvirt/src/vmx/vmx.c:2495:
      leaked_storage: Variable "networkName" going out of scope leaks the storage it points to.
      
      (cherry picked from commit 409a637e)
      052ef069
    • O
      Coverity: Fix resource leak in virnetlink.c · 655d3b2b
      Osier Yang 提交于
      (cherry picked from commit fd2b4157)
      655d3b2b
    • O
      Coverity: Fix resource leak in nodeinfo.c · 707624b3
      Osier Yang 提交于
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:629: alloc_fn: Calling allocation function "fopen".
      /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:629: var_assign: Assigning: "cpuinfo" =  storage returned from "fopen("/proc/cpuinfo", "r")".
      /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:638: leaked_storage: Variable "cpuinfo" going out of scope leaks the storage it points to.
      (cherry picked from commit 739cfc31)
      707624b3
    • O
      Coverity: Fix resource leak in test driver · 65687528
      Osier Yang 提交于
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/test/test_driver.c:1041: alloc_arg: Calling allocation function "virXPathNodeSet" on "devs".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/xml.c:621: alloc_arg: "virAllocN" allocates memory that is stored into "*list".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:129: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:129: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(count, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/xml.c:625: noescape: Variable "*list" is not freed or pointed-to in function "memcpy".
      /builddir/build/BUILD/libvirt-0.9.10/src/test/test_driver.c:1098: leaked_storage: Variable "devs" going out of scope leaks the storage it points to.
      (cherry picked from commit ad4d4ad0)
      65687528
    • O
      Coverity: Fix resource leak in xen driver · 20c06574
      Osier Yang 提交于
      Coverity logs:
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:103: alloc_fn: Calling allocation function "xenDaemonLookupByUUID".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2534: alloc_fn: Storage is returned from allocation function "virGetDomain".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:191: alloc_arg: "virAlloc" allocates memory that is stored into "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:210: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2534: var_assign: Assigning: "ret" = "virGetDomain(conn, name, uuid)".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2541: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:103: var_assign: Assigning: "dom" =  storage returned from "xenDaemonLookupByUUID(conn, rawuuid)".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:126: leaked_storage: Variable "dom" going out of scope leaks the storage it points to.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2742: alloc_fn: Calling allocation function "fopen".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2742: var_assign: Assigning: "cpuinfo" =  storage returned from "fopen("/proc/cpuinfo", "r")".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2763: noescape: Variable "cpuinfo" is not freed or pointed-to in function "xenHypervisorMakeCapabilitiesInternal".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2574:45: noescape: "xenHypervisorMakeCapabilitiesInternal" does not free or save its pointer parameter "cpuinfo".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2768: leaked_storage: Variable "cpuinfo" going out of scope leaks the storage it points to.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2752: alloc_fn: Calling allocation function "fopen".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2752: var_assign: Assigning: "capabilities" =  storage returned from "fopen("/sys/hypervisor/properties/capabilities", "r")".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2763: noescape: Variable "capabilities" is not freed or pointed-to in function "xenHypervisorMakeCapabilitiesInternal".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2574:60: noescape: "xenHypervisorMakeCapabilitiesInternal" does not free or save its pointer parameter "capabilities".
      /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2768: leaked_storage: Variable "capabilities" going out of scope leaks the storage it points to.
      (cherry picked from commit e91e0ab6)
      20c06574
  2. 08 6月, 2012 20 次提交
    • O
      Coverity: Fix resource leaks in phyp driver · 7dc3258a
      Osier Yang 提交于
      Coverity logs:
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:523: alloc_fn: Calling allocation function "fopen".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:523: var_assign: Assigning: "fd" =  storage returned from "fopen(local_file, "rb")".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:540: noescape: Variable "fd" is not freed or pointed-to in function "fread".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:542: noescape: Variable "fd" is not freed or pointed-to in function "feof".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:575: leaked_storage: Variable "fd" going out of scope leaks the storage it points to.
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:585: leaked_storage: Variable "fd" going out of scope leaks the storage it points to.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2088: alloc_fn: Calling allocation function "phypVolumeLookupByName".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2026: alloc_fn: Storage is returned from allocation function "virGetStorageVol".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:724: alloc_arg: "virAlloc" allocates memory that is stored into "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:753: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2026: var_assign: Assigning: "vol" = "virGetStorageVol(pool->conn, pool->name, volname, key)".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2030: return_alloc: Returning allocated memory "vol".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2088: leaked_storage: Failing to save storage allocated by "phypVolumeLookupByName(pool, voldef->name)" leaks it.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2725: alloc_fn: Calling allocation function "phypGetStoragePoolLookUpByUUID".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2689: alloc_fn: Storage is returned from allocation function "virGetStoragePool".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:592: alloc_arg: "virAlloc" allocates memory that is stored into "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:610: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2689: var_assign: Assigning: "sp" = "virGetStoragePool(conn, pools[i], uuid)".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2694: return_alloc: Returning allocated memory "sp".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2725: leaked_storage: Failing to save storage allocated by "phypGetStoragePoolLookUpByUUID(conn, def->uuid)" leaks it.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2719: alloc_fn: Calling allocation function "phypStoragePoolLookupByName".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2254: alloc_fn: Storage is returned from allocation function "virGetStoragePool".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:592: alloc_arg: "virAlloc" allocates memory that is stored into "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:610: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2254: return_alloc_fn: Directly returning storage allocated by "virGetStoragePool".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2719: leaked_storage: Failing to save storage allocated by "phypStoragePoolLookupByName(conn, def->name)" leaks it.
      
      Error: RESOURCE_LEAK:
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2270: alloc_fn: Calling allocation function "phypStoragePoolLookupByName".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2254: alloc_fn: Storage is returned from allocation function "virGetStoragePool".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:592: alloc_arg: "virAlloc" allocates memory that is stored into "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc".
      /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)".
      /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:610: return_alloc: Returning allocated memory "ret".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2254: return_alloc_fn: Directly returning storage allocated by "virGetStoragePool".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2270: var_assign: Assigning: "sp" =  storage returned from "phypStoragePoolLookupByName(vol->conn, vol->pool)".
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2324: leaked_storage: Variable "sp" going out of scope leaks the storage it points to.
      /builddir/build/BUILD/libvirt-0.9.10/src/phyp/phyp_driver.c:2327: leaked_storage: Variable "sp" going out of scope leaks the storage it points t
      (cherry picked from commit cff0d342)
      7dc3258a
    • O
      Coverity: Fix the forward_null error in Python binding codes · 8d196620
      Osier Yang 提交于
      Related coverity log:
      
      Error: FORWARD_NULL:
      /builddir/build/BUILD/libvirt-0.9.10/python/libvirt-override.c:355:
      assign_zero: Assigning: "params" = 0.
      /builddir/build/BUILD/libvirt-0.9.10/python/libvirt-override.c:458:
      var_deref_model: Passing null variable "params" to function
      "getPyVirTypedParameter", which dereferences it. (The dereference is assumed on
      the basis of the 'nonnull' parameter attribute.)
      (cherry picked from commit b80f4db9)
      8d196620
    • E
      build: fix build on cygwin · e28cfeb1
      Eric Blake 提交于
      On cygwin, <rpc/rpc.h> lives in a different directory than
      /usr/include, so anything that uses it must modify CFLAGS.  This
      previously tripped up just 'make check', but now that we build
      all test programs unconditionally, it also trips up 'make'.
      
      * tests/Makefile.am (virnetmessagetest_CFLAGS): Find rpc headers.
      (cherry picked from commit c8982638)
      e28cfeb1
    • L
      Correct indent errors in the function qemuDomainNetsRestart · d0714c92
      Li Zhang 提交于
      qemuDomainNetsRestart indents with 3 spaces.
      
      This patch is to correct it.
      Signed-off-by: NLi Zhang <zhlcindy@linux.vnet.ibm.com>
      (cherry picked from commit 0d631e91)
      d0714c92
    • M
      build: update pid_t type static check · 4a9f92f2
      Marc-André Lureau 提交于
      The code uses long long for pid_t now.
      It fails on mingw64 without this change.
      (cherry picked from commit d08c28f6)
      4a9f92f2
    • M
      build: fix output of pid values · f065174e
      Marc-André Lureau 提交于
      Fix a few more places where pid_t is printed with wrong type
      (cherry picked from commit ca1bf4bd)
      f065174e
    • E
      virsh: make -h always give help · 763f71e5
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=817244 mentions that
      unlike most other tools, where --help or --version prevent all
      further parsing of all later options, virsh was strange in that
      --version stopped parsing but --help tried to plow on to the end.
      There was no rationale for this original implementation (since
      2005!), so I think we can safely conform to common usage patterns.
      
      * tools/virsh.c (main): Drop useless 'help' variable.
      (cherry picked from commit 46e5d36b)
      763f71e5
    • L
      build: make ATTRIBUTE_NONNULL() a NOP unless STATIC_ANALYSIS is on · 180fb3b2
      Laine Stump 提交于
      The ATTRIBUTE_NONNULL(m) macro normally resolves to the gcc builtin
      __attribute__((__nonnull__(m))). The effect of this in gcc is
      unfortunately only to make gcc believe that "m" can never possibly be
      NULL, *not* to add in any checks to guarantee that it isn't ever NULL
      (i.e. it is an optimization aid, *not* something to verify code
      correctness.) - see the following gcc bug report for more details:
      
        http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17308
      
      Static source analyzers such as clang and coverity apparently can use
      ATTRIBUTE_NONNULL(), though, to detect dead code (in the case that the
      arg really is guaranteed non-NULL), as well as situations where an
      obviously NULL arg is given to the function.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=815270 is a good example
      of a bug caused by erroneous application of ATTRIBUTE_NONNULL().
      Several people spent a long time staring at this code and not finding
      the problem, because the problem wasn't in the function itself, but in
      the prototype that specified ATTRIBUTE_NONNULL() for an arg that
      actually *wasn't* always non-NULL, and caused a segv when dereferenced
      (even though the code that dereferenced the pointer was inside an if()
      that checked for a NULL pointer, that code was optimized out by gcc).
      
      There may be some very small gain to be had from the optimizations
      that can be inferred from ATTRIBUTE_NONNULL(), but it seems safer to
      err on the side of generating code that behaves as expected, while
      turning on the attribute for static analyzers.
      (cherry picked from commit eefb881d)
      180fb3b2
    • D
      Make lxcContainerSetStdio the last thing to be called in container startup · 588b16bb
      Daniel P. Berrange 提交于
      Once lxcContainerSetStdio is invoked, logging will not work as
      expected in libvirt_lxc. So make sure this is the last thing to
      be called, in particular after setting the security process label
      (cherry picked from commit 07cf96ec)
      588b16bb
    • D
      Ensure logging is initialized early in libvirt_lxc · e36af9f8
      Daniel P. Berrange 提交于
      The virLogSetFromEnv call was done too late in startup to
      catch many log messages (eg from security driver initialization).
      To assist debugging also explicitly log the security details
      at startup
      (cherry picked from commit 43ee9873)
      e36af9f8
    • D
      Ensure LXC security driver is set unconditonally · aa829d7b
      Daniel P. Berrange 提交于
      The driver->securityDriverName field may be NULL, if automatic
      probing is used to determine security driver. This meant that
      unless selinux was explicitly requested in lxc.conf, it was
      not being sent to the libvirt_lxc process.
      
      The driver->securityManager field is guaranteed non-NULL, since
      there will always be the 'none' security driver present if
      nothing else exists. So use that to set the driver name for
      libvirt_lxc
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      (cherry picked from commit 3746b070)
      aa829d7b
    • D
      Ensure libvirt_lxc process loads the live XML config · 75a5c822
      Daniel P. Berrange 提交于
      Currently the libvirt_lxc process uses VIR_DOMAIN_XML_INACTIVE
      when loading the XML for the container. This means it loses
      any dynamic data such as the, just allocated, SELinux label.
      
      Further there is an inconsistency in the libvirt LXC driver
      whereby it saves the live config XML and then later overwrites
      the file with the live status XML instead. Add a comment about
      this for future reference.
      
      * src/lxc/lxc_controller.c: Remove VIR_DOMAIN_XML_INACTIVE
        when loading XML
      * src/lxc/lxc_driver.c: Add comment about inconsistent
        config file formats
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      (cherry picked from commit eb06375a)
      75a5c822
    • E
      maint: avoid false positives on unmarked diagnostics · 2cb6a0e8
      Eric Blake 提交于
      Otherwise, a string such as _("Don't use \"" VAR "\".") would
      complain about unmarked diagnostics.
      
      * cfg.mk (sc_libvirt_unmarked_diagnostics): Handle \" in message.
      (cherry picked from commit 8f3728f8)
      2cb6a0e8
    • J
      qemu: allow snapshotting of sheepdog and rbd disks · 0f28a21b
      Josh Durgin 提交于
      Signed-off-by: NJosh Durgin <josh.durgin@dreamhost.com>
      (cherry picked from commit b57e0153)
      0f28a21b
    • J
      qemu: change rbd auth_supported separation character to ; · 45e60ff0
      Josh Durgin 提交于
      This works with newer qemu that doesn't allow escaping spaces.
      It's backwards compatible as well.
      Signed-off-by: NJosh Durgin <josh.durgin@dreamhost.com>
      (cherry picked from commit d50cae33)
      45e60ff0
    • A
      util: Avoid libvirtd crash in virNetDevTapCreate · 6bbfd92d
      Alex Jia 提交于
      In fact, the 'tapfd' is always NULL, the function 'virNetDevTapCreate()' hasn't
      assign 'fd' to 'tapfd', when the function 'virNetDevSetMAC()' is failed then
      goto 'error' label, finally, the VIR_FORCE_CLOSE() will deref a NULL 'tapfd'.
      
      * util/virnetdevtap.c (virNetDevTapCreateInBridgePort): fix a NULL pointer derefing.
      
      * How to reproduce?
      
      $ cat > /tmp/net.xml <<EOF
      <network>
        <name>test</name>
        <forward mode='nat'/>
        <bridge name='br1' stp='off' delay='1' />
        <mac address='00:00:00:00:00:00'/>
        <ip address='192.168.100.1' netmask='255.255.255.0'>
          <dhcp>
            <range start='192.168.100.2' end='192.168.100.254' />
          </dhcp>
        </ip>
      </network>
      EOF
      
      $ virsh net-define /tmp/net.xml
      
      $ virsh net-start test
      error: Failed to start network brTest
      error: End of file while reading data: Input/output error
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      (cherry picked from commit 5ee18aaa)
      6bbfd92d
    • O
      storage: Break out the loop if duplicate pool is found · d070e1d1
      Osier Yang 提交于
      It doesn't break out the "for" loop even if duplicate pool is
      found, and thus the "matchpool" could be overriden as NULL again
      if there is different pool afterwards.
      
      To address the problem in libvirt-user list:
      
      https://www.redhat.com/archives/libvirt-users/2012-April/msg00150.html
      (cherry picked from commit 980f12be)
      d070e1d1
    • J
      qemu: Make sure qemu can access its directory in hugetlbfs · 30e02e12
      Jiri Denemark 提交于
      When libvirtd is started, we create "libvirt/qemu" directories under
      hugetlbfs mount point. Only the "qemu" subdirectory is chowned to qemu
      user and "libvirt" remains owned by root. If umask was too restrictive
      when libvirtd started, qemu user may lose access to "qemu"
      subdirectory. Let's explicitly grant search permissions to "libvirt"
      directory for all users.
      (cherry picked from commit 9d2ac545)
      30e02e12
    • M
      qemu_agent: Report error class at least · 30aede22
      Michal Privoznik 提交于
      Currently, qemu GA is not providing 'desc' field for errors like
      we are used to from qemu monitor. Therefore, we fall back to this
      general 'unknown error' string. However, GA is reporting 'class' which
      is not perfect, but much more helpful than generic error string.
      Thus we should fall back to class firstly and if even no class
      is presented, then we can fall back to that generic string.
      
      Before this patch:
      virsh # dompmsuspend --target mem f16
      error: Domain f16 could not be suspended
      error: internal error unable to execute QEMU command
      'guest-suspend-ram': unknown QEMU command error
      
      After this patch:
      virsh # dompmsuspend --target mem f16
      error: Domain f16 could not be suspended
      error: internal error unable to execute QEMU command
      'guest-suspend-ram': The command has not been found
      (cherry picked from commit 37803108)
      30aede22
    • S
      More coverity findings addressed · fae6eb83
      Stefan Berger 提交于
      More bug extermination in the category of:
      
      Error: CHECKED_RETURN:
      
      /libvirt/src/conf/network_conf.c:595:
      check_return: Calling function "virAsprintf" without checking return value (as is done elsewhere 515 out of 543 times).
      
      /libvirt/src/qemu/qemu_process.c:2780:
      unchecked_value: No check of the return value of "virAsprintf(&msg, "was paused (%s)", virDomainPausedReasonTypeToString(reason))".
      
      /libvirt/tests/commandtest.c:809:
      check_return: Calling function "setsid" without checking return value (as is done elsewhere 4 out of 5 times).
      
      /libvirt/tests/commandtest.c:830:
      unchecked_value: No check of the return value of "virTestGetDebug()".
      
      /libvirt/tests/commandtest.c:831:
      check_return: Calling function "virTestGetVerbose" without checking return value (as is done elsewhere 41 out of 42 times).
      
      /libvirt/tests/commandtest.c:833:
      check_return: Calling function "virInitialize" without checking return value (as is done elsewhere 18 out of 21 times).
      
      One note about the error in commandtest line 809: setsid() seems to fail when running the test -- could be removed ?
      
      (cherry picked from commit 59b935f5)
      fae6eb83