)]}'
{
  "commit": "f6989c5959ab33dcb983eaf490de10d83dbc810d",
  "tree": "270bb06297ca60cb4e62e79ce8dd5e3a12eed3d0",
  "parents": [
    "e8c1c3274309bd87f360205f5706e986ceccb317"
  ],
  "author": {
    "name": "Stian Halseth",
    "email": "stian@itx.no",
    "time": "Mon Aug 24 19:58:11 2026 +0000"
  },
  "committer": {
    "name": "Cherry Mui",
    "email": "cherryyz@google.com",
    "time": "Tue Aug 25 07:23:08 2026 -0700"
  },
  "message": "unix: align Ifreq so its union accessors cannot fault\n\nUint16, SetUint16, Uint32, SetUint32, Inet4Addr and SetInet4Addr cast the\nifreq union to uint16, uint32 or RawSockaddrInet4 and access it in place.\nThe generated ifreq declares that union as a byte array, so the type\nguarantees only byte alignment and the compiler may put an Ifreq at any\naddress - as it does for the elements of a []Ifreq, which pack at the\nstruct\u0027s size with an alignment of one.\n\nA misaligned access is merely slow on amd64 and arm64; on sparc64 it\nfaults, and TestIoctlIfreq died with SIGBUS.\n\nAlign the wrapper rather than changing the accessors. The union lies at\noffset 16 within ifreq on every architecture, so aligning the wrapper\naligns the union, and all six accessors are covered instead of only the\nfour integer ones.\n\nTestIfreqAlignment pins the invariant. Without the fix it fails on every\narchitecture, reporting an alignment of 1, so catching a regression does\nnot need sparc64 hardware.\n\nUpdates golang/go#55000\n\nChange-Id: I70aca33419086de9eb68032e354e5f666cc20562\nGitHub-Last-Rev: 637b50d0e63b84eb536019d7c893c5cb07289bf3\nGitHub-Pull-Request: golang/sys#287\nReviewed-on: https://go-review.googlesource.com/c/sys/+/820000\nReviewed-by: Ian Lance Taylor \u003ciant@golang.org\u003e\nReviewed-by: David Chase \u003cdrchase@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Cherry Mui \u003ccherryyz@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "309f5a2b0c76ae861d126b14a2176da2d9ee5a03",
      "old_mode": 33188,
      "old_path": "unix/ifreq_linux.go",
      "new_id": "3f7fa766437cbb6299fe7e5d0d8d3fe35d02742e",
      "new_mode": 33188,
      "new_path": "unix/ifreq_linux.go"
    },
    {
      "type": "modify",
      "old_id": "f10040bdaebec11946b49389de90a2140c56731a",
      "old_mode": 33188,
      "old_path": "unix/ifreq_linux_test.go",
      "new_id": "67188c62200b59958d7fbadd55217caf18b687ac",
      "new_mode": 33188,
      "new_path": "unix/ifreq_linux_test.go"
    }
  ]
}
