Skip to content
Snippets Groups Projects
  1. Aug 18, 2022
    • Priyankar Jain's avatar
      dbus-vmstate: Restrict error checks to registered proxies in dbus_get_proxies · 27485832
      Priyankar Jain authored
      
      The purpose of dbus_get_proxies to construct the proxies corresponding to the
      IDs registered to dbus-vmstate.
      
      Currenty, this function returns an error in case there is any failure
      while instantiating proxy for "all" the names on dbus.
      
      Ideally this function should error out only if it is not able to find and
      validate the proxies registered to the backend otherwise any offending
      process(for eg: the process purposefully may not export its Id property on
      the dbus) may connect to the dbus and can lead to migration failures.
      
      This commit ensures that dbus_get_proxies returns an error if it is not
      able to find and validate the proxies of interest(the IDs registered
      during the dbus-vmstate instantiation).
      
      Signed-off-by: default avatarPriyankar Jain <priyankar.jain@nutanix.com>
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <1637936117-37977-1-git-send-email-priyankar.jain@nutanix.com>
      27485832
  2. Apr 01, 2021
    • Priyankar Jain's avatar
      dbus-vmstate: Increase the size of input stream buffer used during load · 1d9fa7a8
      Priyankar Jain authored
      
      This commit fixes an issue where migration is failing in the load phase
      because of a false alarm about data unavailability.
      
      Following is the error received when the amount of data to be transferred
      exceeds the default buffer size setup by G_BUFFERED_INPUT_STREAM(4KiB),
      even when the maximum data size supported by this backend is 1MiB
      (DBUS_VMSTATE_SIZE_LIMIT):
      
        dbus_vmstate_post_load: Invalid vmstate size: 4364
        qemu-kvm: error while loading state for instance 0x0 of device 'dbus-vmstate/dbus-vmstate'
      
      This commit sets the size of the input stream buffer used during load to
      DBUS_VMSTATE_SIZE_LIMIT which is the maximum amount of data a helper can
      send during save phase.
      Secondly, this commit makes sure that the input stream buffer is loaded before
      checking the size of the data available in it, rectifying the false alarm about
      data unavailability.
      
      Fixes: 5010cec2 ("Add dbus-vmstate object")
      Signed-off-by: default avatarPriyankar Jain <priyankar.jain@nutanix.com>
      Message-Id: <cdaad4718e62bf22fd5e93ef3e252de20da5c17c.1612273156.git.priyankar.jain@nutanix.com>
      [ Modified printf format for gsize ]
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      1d9fa7a8
  3. Mar 09, 2021
  4. Sep 18, 2020
  5. Sep 09, 2020
  6. May 15, 2020
    • Markus Armbruster's avatar
      qom: Drop parameter @errp of object_property_add() & friends · d2623129
      Markus Armbruster authored
      
      The only way object_property_add() can fail is when a property with
      the same name already exists.  Since our property names are all
      hardcoded, failure is a programming error, and the appropriate way to
      handle it is passing &error_abort.
      
      Same for its variants, except for object_property_add_child(), which
      additionally fails when the child already has a parent.  Parentage is
      also under program control, so this is a programming error, too.
      
      We have a bit over 500 callers.  Almost half of them pass
      &error_abort, slightly fewer ignore errors, one test case handles
      errors, and the remaining few callers pass them to their own callers.
      
      The previous few commits demonstrated once again that ignoring
      programming errors is a bad idea.
      
      Of the few ones that pass on errors, several violate the Error API.
      The Error ** argument must be NULL, &error_abort, &error_fatal, or a
      pointer to a variable containing NULL.  Passing an argument of the
      latter kind twice without clearing it in between is wrong: if the
      first call sets an error, it no longer points to NULL for the second
      call.  ich9_pm_add_properties(), sparc32_ledma_realize(),
      sparc32_dma_realize(), xilinx_axidma_realize(), xilinx_enet_realize()
      are wrong that way.
      
      When the one appropriate choice of argument is &error_abort, letting
      users pick the argument is a bad idea.
      
      Drop parameter @errp and assert the preconditions instead.
      
      There's one exception to "duplicate property name is a programming
      error": the way object_property_add() implements the magic (and
      undocumented) "automatic arrayification".  Don't drop @errp there.
      Instead, rename object_property_add() to object_property_try_add(),
      and add the obvious wrapper object_property_add().
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20200505152926.18877-15-armbru@redhat.com>
      [Two semantic rebase conflicts resolved]
      d2623129
  7. Jan 20, 2020
  8. Jan 06, 2020
Loading