[roll] Roll fuchsia [starnix] Refactor UserAddress for overflow safety

This change refactors UserAddress and its API so that operations are
checked for overflow. Notably, we lose the ergonomics of += and -=
operations, since the trait definition doesn't allow for any memory-safe
way to modify a UserAddress in place and communicate potential faults
back to the caller. I think this is an acceptable loss.

Some notable changes in this commit include:

- Many of the syscalls return EFAULT now, which I've audited against the
  manpages for correctness. However, I did not audit every code branch
  and there may be places where we now EFAULT unexpectedly.
- msync transforms the EFAULT return code, based on the manpage for it.
- memory_manager now has some callsites which return early on erroneous
  address manipulation. This might cause side effects, but I'm not
  familiar enough with that code to deduce them.

Original-Bug: 387826083
Test: TBD
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1255695
Original-Revision: f4acb96e88fa55b06a7799151a484fed1c7152a3
GitOrigin-RevId: bf543401fa8aede8dac2dded59779d8c823876c1
Change-Id: Ic87148c036a7688680e17008068f56a71deaa0e8
1 file changed
tree: 37b5a7aec2bceecb5e6a88549aa4c9e34e4445d5
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
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 in one of the communication channels documented at get involved.

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.