)]}'
{
  "commit": "024a8168b749db7a4aa40a5fbdfa04bf7e77c1c0",
  "tree": "bc56cfed6f2c7804f242f4e7c4d6eff41d3fdaf7",
  "parents": [
    "1050242fa657093d3788c3ffa0bd9b42e4d7d1ab"
  ],
  "author": {
    "name": "Francesco Ruggeri",
    "email": "fruggeri@arista.com",
    "time": "Thu Jul 02 15:39:06 2020 -0700"
  },
  "committer": {
    "name": "Tony Nguyen",
    "email": "anthony.l.nguyen@intel.com",
    "time": "Thu Jul 30 10:05:14 2020 -0700"
  },
  "message": "igb: reinit_locked() should be called with rtnl_lock\n\nWe observed two panics involving races with igb_reset_task.\nThe first panic is caused by this race condition:\n\n\tkworker\t\t\treboot -f\n\n\tigb_reset_task\n\tigb_reinit_locked\n\tigb_down\n\tnapi_synchronize\n\t\t\t\t__igb_shutdown\n\t\t\t\tigb_clear_interrupt_scheme\n\t\t\t\tigb_free_q_vectors\n\t\t\t\tigb_free_q_vector\n\t\t\t\tadapter-\u003eq_vector[v_idx] \u003d NULL;\n\tnapi_disable\n\tPanics trying to access\n\tadapter-\u003eq_vector[v_idx].napi_state\n\nThe second panic (a divide error) is caused by this race:\n\nkworker\t\treboot -f\ttx packet\n\nigb_reset_task\n\t\t__igb_shutdown\n\t\trtnl_lock()\n\t\t...\n\t\tigb_clear_interrupt_scheme\n\t\tigb_free_q_vectors\n\t\tadapter-\u003enum_tx_queues \u003d 0\n\t\t...\n\t\trtnl_unlock()\nrtnl_lock()\nigb_reinit_locked\nigb_down\nigb_up\nnetif_tx_start_all_queues\n\t\t\t\tdev_hard_start_xmit\n\t\t\t\tigb_xmit_frame\n\t\t\t\tigb_tx_queue_mapping\n\t\t\t\tPanics on\n\t\t\t\tr_idx % adapter-\u003enum_tx_queues\n\nThis commit applies to igb_reset_task the same changes that\nwere applied to ixgbe in commit 2f90b8657ec9 (\"ixgbe: this patch\nadds support for DCB to the kernel and ixgbe driver\"),\ncommit 8f4c5c9fb87a (\"ixgbe: reinit_locked() should be called with\nrtnl_lock\") and commit 88adce4ea8f9 (\"ixgbe: fix possible race in\nreset subtask\").\n\nSigned-off-by: Francesco Ruggeri \u003cfruggeri@arista.com\u003e\nTested-by: Aaron Brown \u003caaron.f.brown@intel.com\u003e\nSigned-off-by: Tony Nguyen \u003canthony.l.nguyen@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8bb3db2cbd417f908a07eb3628372ca2ab539f53",
      "old_mode": 33188,
      "old_path": "drivers/net/ethernet/intel/igb/igb_main.c",
      "new_id": "6e5861bfb0fa9560aa79837efc8130ad33070a57",
      "new_mode": 33188,
      "new_path": "drivers/net/ethernet/intel/igb/igb_main.c"
    }
  ]
}
