[roll] Roll fuchsia [kernel][clock] Ensure all shared clock RAM is initialized.

Make sure that we have don't have any uninitialized memory in the
memory we share for a memory mapped kernel clock.

_Technically_ we didn't before, but Gemini thought that it had found
an information leak.  This change should make it absolutely certain
that it does not even look like we might have one.

The issue went something like this.

1) When we want to make a memory mapped clock to share with a user, we
   allocated a page of RAM as an always pinned VmObjectPaged instance.
2) This should be zero initialized for us already, so the state of the
   page should be all zeros.
3) We then placement-new a `fasttime::ClockTransformation::Params`
   structure at the start of our page.  This (plus the rest of the
   page) are what we are going to share with the user.
4) Our Params structure was not a multiple of 8 bytes in size, so it
   was being implicitly padded by 4 bytes by the compiler.
5) This padding should also be zero, since it should take on the value
   of what was in memory before (which was 0, see #2)
6) But, we have debug build flags set which cause our compiler to fill
   these padding regions with a non-zero pattern (`0xaa`s in this
   instance)

Gemini discovered that it could memory map a clock and poke at the
bytes and find those `0xaa`s, and it assumed that we were leaking
Kernel Secrets.

So, close this gap.

1) Pad the Params structure out to an 8 byte boundary, and initialize
   the padding with an explicit zero value.
2) Statically assert that the Params structure uses both a standard
   layout (no vtables, no MI, etc), and also has a unique
   representation (so we know that there is no implicit padding).
3) Add Gemini's test as a regression test, fixing a minor memory
   safety issue it had along the way.

Original-Original-Fixed: 511253004
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1609037
Original-Original-Revision: 303e42ecb11e03b4cd9366246773e006b96d7ce7
GitOrigin-RevId: 56235e326fe23ea82cd6a7922da944421abb0b7e
Change-Id: Ic71c037e700bdcd0eb770c267396425aed5eeac4
1 file changed
tree: f019d822dfca9dd7afa33f37ccb4b47c7a82a428
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. 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.