)]}'
{
  "commit": "3959364f5525798b5055a7dd45872734093d9207",
  "tree": "97e1dac9321a578681ec95d5775bbc35073fc48d",
  "parents": [
    "b9e0c44f33801fe6fffcadf9e56cb2f3efc24434"
  ],
  "author": {
    "name": "Guangzong Chen",
    "email": "guangzong@google.com",
    "time": "Mon Sep 28 19:33:48 2026 +0000"
  },
  "committer": {
    "name": "Guangzong Chen",
    "email": "guangzong@google.com",
    "time": "Mon Sep 28 19:34:45 2026 +0000"
  },
  "message": "nvmed: reset featureStore in NVMeSubsystem::markFunctional(false)\n\nWhen MCTP reactor restarts or the MCTP endpoint disconnects,\nNVMeSubsystem::markFunctional(false) clears attached volumes and\ncontrollers, but previously omitted resetting featureStore.\n\nAs a result, featureStore retained a dangling pointer to nvme_mi_ctrl_t\nwhich was freed when the MCTP connection closed. When the endpoint\nreconnected, initializeFeatureStore() exited early because featureStore\nwas already populated, preserving the stale controller reference.\nSubsequent NVMe admin queries (such as nvme_mi_admin_get_log) then\naccessed the freed memory, causing a SIGSEGV crash.\n\nReset featureStore in NVMeSubsystem::markFunctional(false) so that\nthe stale FeatureStore is properly destroyed and recreated with the\nnew controller upon reconnection.\n\nTested: Ran unit tests.\nGoogle-Bug-Id: 565728782\nChange-Id: Iae25de23fcd80373c4089365991233cb30a33395\nSigned-off-by: Guangzong Chen \u003cguangzong@google.com\u003e\nTAG\u003dagy\nCONV\u003d05ec5ee7-d8a8-4299-9bd5-92c2d10bad16\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "112f906b2d873162a35138b9571b018485d0ecdc",
      "old_mode": 33188,
      "old_path": "src/NVMeSubsys.cpp",
      "new_id": "3fc02d4173c7da1615e3658791288a5b890c06f4",
      "new_mode": 33188,
      "new_path": "src/NVMeSubsys.cpp"
    }
  ]
}
