[roll] Roll fuchsia [fshost-rust] Reset fvm partitions on format

This CL ensures that after the account migrations are complete and
we switch over to hardware backed keys, the FVM is reset to a known
good state such that the account and virtualization partitions are
destroyed and the FVM data partition is resized accordingly to take
up the newly freed space on disk. Note that as part of this, the data
partition is destroyed and reallocated so data loss is incurred.

A bug was also uncovered during this CL which is worth documenting.
When fvm_ramdisk is set, there is a ZxcryptMatcher that will attach the
zxcrypt driver to the data device and this new ZxcryptDevice will be
picked up by the device handler and run through various match_device()
implementations associated with different matchers. There is a moment
after we have destroyed the data device in reset_fvm_partition where
the PartitionMapMatcher will call content_format() on this ZxcryptDevice
and because the device has already been destroyed, the get_info() call
which eventually calls `out_info->block_count -= info_.reserved_blocks;`
will cause block_count to underflow and later cause a multiplication
overflow in content_format(). To avoid this, we now clamp block_count
to 0 if it underflows.

Original-Fixed: 119223
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/791309
Original-Revision: 58d8ae86d1d33339a3a53319963c05d41c90bc56
GitOrigin-RevId: d9251d7f747b30ce7ce590d8f4784fdd0615ff8d
Change-Id: I5cbc6b2eb7f935bdc13fb37a0b2ca58fe3da6453
1 file changed
tree: 5801bdc637415a78be642bdca2322c2dc4d50543
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.