)]}'
{
  "commit": "0261c32afc4ee8ff057b1201833b124e18085eda",
  "tree": "f019d822dfca9dd7afa33f37ccb4b47c7a82a428",
  "parents": [
    "8555b2c222b189adb3b7d98f62add0c6183f1297"
  ],
  "author": {
    "name": "John Grossman",
    "email": "johngro@fuchsia.infra.roller.google.com",
    "time": "Wed May 13 06:52:49 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu May 21 10:55:13 2026 -0700"
  },
  "message": "[roll] Roll fuchsia [kernel][clock] Ensure all shared clock RAM is initialized.\n\nMake sure that we have don\u0027t have any uninitialized memory in the\nmemory we share for a memory mapped kernel clock.\n\n_Technically_ we didn\u0027t before, but Gemini thought that it had found\nan information leak.  This change should make it absolutely certain\nthat it does not even look like we might have one.\n\nThe issue went something like this.\n\n1) When we want to make a memory mapped clock to share with a user, we\n   allocated a page of RAM as an always pinned VmObjectPaged instance.\n2) This should be zero initialized for us already, so the state of the\n   page should be all zeros.\n3) We then placement-new a `fasttime::ClockTransformation::Params`\n   structure at the start of our page.  This (plus the rest of the\n   page) are what we are going to share with the user.\n4) Our Params structure was not a multiple of 8 bytes in size, so it\n   was being implicitly padded by 4 bytes by the compiler.\n5) This padding should also be zero, since it should take on the value\n   of what was in memory before (which was 0, see #2)\n6) But, we have debug build flags set which cause our compiler to fill\n   these padding regions with a non-zero pattern (`0xaa`s in this\n   instance)\n\nGemini discovered that it could memory map a clock and poke at the\nbytes and find those `0xaa`s, and it assumed that we were leaking\nKernel Secrets.\n\nSo, close this gap.\n\n1) Pad the Params structure out to an 8 byte boundary, and initialize\n   the padding with an explicit zero value.\n2) Statically assert that the Params structure uses both a standard\n   layout (no vtables, no MI, etc), and also has a unique\n   representation (so we know that there is no implicit padding).\n3) Add Gemini\u0027s test as a regression test, fixing a minor memory\n   safety issue it had along the way.\n\nOriginal-Original-Fixed: 511253004\nOriginal-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1609037\nOriginal-Original-Revision: 303e42ecb11e03b4cd9366246773e006b96d7ce7\nGitOrigin-RevId: 56235e326fe23ea82cd6a7922da944421abb0b7e\nChange-Id: Ic71c037e700bdcd0eb770c267396425aed5eeac4\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4c36e031d5f09c7733a70e6ed3c1aff1bd04af60",
      "old_mode": 33188,
      "old_path": "stem",
      "new_id": "0fdcbfc677b14cbc6d8a2c95ea960726cf7cb81d",
      "new_mode": 33188,
      "new_path": "stem"
    }
  ]
}
