)]}'
{
  "commit": "e5c8d7acd31b27057ea42cd405d0b3ece097bc89",
  "tree": "0947328deb5935f4bd48cd24b22338426a64541f",
  "parents": [
    "a842cfc1d6d85b34ad73959460def4d4641e82e8"
  ],
  "author": {
    "name": "Zihan Xi",
    "email": "zihanx@nebusec.ai",
    "time": "Wed Sep 09 12:37:18 2026 +0000"
  },
  "committer": {
    "name": "Johannes Berg",
    "email": "johannes.berg@intel.com",
    "time": "Mon Sep 14 14:48:01 2026 +0200"
  },
  "message": "wifi: virt_wifi: don\u0027t transfer operstate before register\n\nvirt_wifi_newlink() calls netif_stacked_transfer_operstate() before\nregister_netdevice(). If the lower device is dormant, that queues the\nnew netdev on lweventlist while it is still uninitialized. If\nregistration fails after that, for example because of an invalid name\nsuch as \"bad/name\", free_netdev() immediately frees the object. A\nlater linkwatch_fire_event() then use-after-frees the list entry.\n\nMove the transfer to after netdev_upper_dev_link(), as macvlan and\nipvlan already do.\n\nFixes: c7cdba31ed8b (\"mac80211-next: rtnetlink wifi simulation device\")\nReported-by: Vega \u003cvega@nebusec.ai\u003e\nAssisted-by: LLM\nCo-developed-by: Luxing Yin \u003croot@tr0jan.top\u003e\nSigned-off-by: Luxing Yin \u003croot@tr0jan.top\u003e\nSigned-off-by: Zihan Xi \u003czihanx@nebusec.ai\u003e\nLink: https://patch.msgid.link/f5a832fb0ab228ce6e2b5a91fba4ca8b79198a2f.1788948455.git.zihanx@nebusec.ai\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b69a4650fba855039e2e08d4f9c8b7700a9ae646",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/virtual/virt_wifi.c",
      "new_id": "48afc2432f93a858584b01cd0112d3d3fbf0da69",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/virtual/virt_wifi.c"
    }
  ]
}
