[roll] Roll fuchsia [kernel][vm] Traversal fix in ForEveryPageAndContiguousRunInRange

Whether a page is visited is controlled by the compare_func evaluating
to true for it. If true, per_page_func is executed which follows the
standard traversal rules (ZX_ERR_NEXT to proceed, ZX_ERR_STOP to stop,
!ZX_OK for error). Additionally, the contiguous_run_func is executed on
contiguous ranges accumulated by the compare_func.

The implementation executes per_page_func before contiguous_run_func,
but whether or not contiguous_run_func is executed should not depend on
the result of per_page_func. More specifically, if per_page_func returns
ZX_ERR_STOP, that means traversal should not continue on to the *next*
page. The current page however should still be included in the
contiguous range for contiguous_run_func if applicable. An error return
code from per_page_func is still bubbled up immediately and traversal
terminated.

Test: vmpl_unittest
Run-All-Tests: true
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/799045
Original-Revision: 69a6fcf919384c446ebb486056b5b5db80f98208
GitOrigin-RevId: a56bc8e13668557bb06bdc12359d44463e009f24
Change-Id: I93f34899de99add0133ecc2cf85696d1ad5c1655
1 file changed
tree: 6aa072caa4165cfbbfd93780d53078a814a28614
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. 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.