)]}'
{
  "commit": "efa8821425571d4de501f56c6865e7d6a30d3bc4",
  "tree": "6928f31e786936fc9c99197c1bdbf23b9b582b9a",
  "parents": [
    "a55e0d6fe381998b57eb325c8f573dcb54185549"
  ],
  "author": {
    "name": "Jonathan Süssemilch Poulain",
    "email": "jpoulain@coreweave.com",
    "time": "Wed Jun 24 10:12:35 2026 +0200"
  },
  "committer": {
    "name": "Nicolas Morey",
    "email": "nmorey@suse.com",
    "time": "Mon Jul 06 13:52:51 2026 +0200"
  },
  "message": "libibnetdisc: keep cache loadable after port timeouts\n\n[ Upstream commit de83d1c208f9550ec1024a132ad982dcba9d8c06 ]\n\nibnetdiscover --cache writes each node\u0027s port references and each\nport\u0027s remote-port reference from the in-memory fabric. If a PortInfo\nquery times out during discovery, the port can remain as a shell in\nnode-\u003eports[] or as a remoteport without ever being inserted into the\nfabric port table. Such a port has no cache port record, but references\nto it were still written. ibnd_load_fabric() then rejected the cache with\n\"Cache invalid: cannot find port\".\n\nMake the cache writer emit only references to ports that are actually\nserialized. A port is serialized only when it is reachable from its\nowning node, and the same predicate is used for node port references,\nremote-port references, and port records. References are matched against\na sorted set of serialized ports, avoiding repeated port-table walks on\nlarge fabrics. Keep nodes with no ports array as zero-port node records\nso fabric-\u003efrom_node remains resolvable.\n\nAlso tolerate old incomplete caches when reading: missing node port keys\nand missing remote ports are skipped instead of aborting the load. While\ndoing that, keep malformed caches from creating unsafe fabric state by\nbounds-checking cached port numbers before indexing node-\u003eports[] (an\nout-of-bounds write) and by skipping unclaimed port records before they\nare linked into the fabric and then freed (a use-after-free).\n\nFixes: 01b8045f28f6 (\"add libibnetdisc caching to libibnetdiscover\")\nSigned-off-by: Jonathan Süssemilch Poulain \u003cjpoulain@coreweave.com\u003e\nSigned-off-by: Nicolas Morey \u003cnmorey@suse.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "10de714e6fa2f63ed5ddbd2e65d6bcee0e0ed26d",
      "old_mode": 33188,
      "old_path": "libibnetdisc/ibnetdisc_cache.c",
      "new_id": "1001d47f64f4cdb15780c39ce640f510985b450a",
      "new_mode": 33188,
      "new_path": "libibnetdisc/ibnetdisc_cache.c"
    }
  ]
}
