[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
This repository contains Fuchsia's Global Integration manifest files.
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.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.