)]}'
{
  "commit": "c9d6dacc04bd85d415664f3267b66c6985ee1481",
  "tree": "b8572bc2feaf669046b0dee44884d0a25b211344",
  "parents": [
    "3fe259256793cab65c39bff8800b142737eb2240"
  ],
  "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:38 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": "605582fca6ccccf9b9b121d08aa46527efd08a25",
      "old_mode": 33188,
      "old_path": "libibnetdisc/ibnetdisc_cache.c",
      "new_id": "8802ab47248f007fbe0c6ac0c3d2f65498f31e42",
      "new_mode": 33188,
      "new_path": "libibnetdisc/ibnetdisc_cache.c"
    }
  ]
}
