[driver_manager] Fix unbind / remove task reference errors.

When SendUnbind or SendCompleteRemove failed, the device would
take ownership of the completion, while the task would try
to call the (now moved) completion.

There was also another ref_ptr issue when SendRemove failed.
The RemoveTask would ask the coordinator to forcibly remove
the device, which would drop the last reference to the device
before the RemoveTask completed. This would trigger a ref_ptr
assert when the task tried to take a new reference in Task::Complete.

Change-Id: I01bd312e1c005e1201e93fccc7bafdffd827945b
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/560144
Reviewed-by: Suraj Malhotra <surajmalhotra@google.com>
Commit-Queue: Jocelyn Dang <jocelyndang@google.com>
4 files changed
tree: e908cd39650244e11e3a578cbd861020a6031ebd
  1. boards/
  2. build/
  3. buildtools/
  4. bundles/
  5. docs/
  6. examples/
  7. garnet/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.