1. 12 Jun, 2015 6 commits
    • Alex Elder's avatar
      greybus: bundle: fix gb_bundle_destroy() · fe53b45c
      Alex Elder authored
      Currently gb_bundle_destroy() takes an interface as an argument,
      and really doesn't do what a function by that name should do.
      
      What it now does is delete all bundles associated with a given
      interface.  What it should do is destroy a single bundle.
      
      Move the looping logic out of gb_bundle_destroy() and into its
      caller, gb_interface_destroy().  Pass each bundle in an interface to
      gb_bundle_destroy(), which will do what's required to destroy a
      single bundle (including removing it from its interface's bundle
      list under protection of the lock).
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      fe53b45c
    • Alex Elder's avatar
      greybus: bundle: refactor gb_bundle_find() · bc942083
      Alex Elder authored
      Rearrange gb_bundle_find() so it follows the pattern used by
      gb_connection_find().
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      bc942083
    • Alex Elder's avatar
      greybus: manifest: clean up properly when parsing cports · 52e8ce31
      Alex Elder authored
      Currently, if an error occurs creating a connection, we simply
      return an error without cleaning up any of the connections that
      had already been successfully set up.
      
      Add code to destroy connections that have been created in the event
      an error occurs.  Add a check to ensure the bundle's list of
      connections was empty before parsing for CPorts begins.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      52e8ce31
    • Alex Elder's avatar
      greybus: connection: un-abstract host cport id allocation · f9b0366f
      Alex Elder authored
      I did this recently for the endo id allocation code.
      
      It's clearer now that the allocation of a CPort ID to use for
      the AP side of a connection is not very complicated, and it
      happens in a pretty controlled environment.  The functions that
      abstract getting and releasing those ids don't really add that
      much value.
      
      This patch removes gb_connection_hd_cport_id_alloc() and
      gb_connection_hd_cport_id_free(), and just open-codes their
      activity in the few places they are called.
      
      It is obvious now that the CPort ID allocation isn't done in
      atomic context, so we can change the ida_simple_get() call to
      use GFP_KERNEL.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      f9b0366f
    • Alex Elder's avatar
      greybus: connection: drop unneeded gb_protocol_put() calls · deb58ca8
      Alex Elder authored
      Although a connection records its protocol id when it gets
      created, its protocol handler doesn't actually get assigned
      until gb_connection_bind_protocol() is called.
      
      In gb_connection_create() there are some error paths in
      which a reference to the connection's protocol is released
      before the protocol handler has been associated with the
      connection.
      
      Get rid of those calls.
      
      As a result, we will never pass a null protocol pointer to
      gb_protocol_put().  Add a precautionary warning in that
      function in the event that ever occurs.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      deb58ca8
    • Alex Elder's avatar
      greybus: connection: remove extra kfree() call · 856618f3
      Alex Elder authored
      When an error occurs in the device_add() call for a connection, the
      device reference is dropped as required.  Because that's the device's
      only reference, that will also lead to gb_connection_release() being
      called, which frees the connection structure.
      
      Right now we're then making an extra request to free the connection,
      which is wrong.  Fix that.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      856618f3
  2. 11 Jun, 2015 3 commits
  3. 10 Jun, 2015 12 commits
  4. 09 Jun, 2015 3 commits
  5. 08 Jun, 2015 7 commits
  6. 04 Jun, 2015 9 commits