)]}'
{
  "commit": "0beea51b28b2fbced5cc91a1c0d2848dd5eb550f",
  "tree": "5e0bd87e0913cabaf1559a9870ee4b7dd171b7ba",
  "parents": [
    "3245801d44a44c090acefe19a12d22d12cac45c5"
  ],
  "author": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Tue Mar 03 08:23:44 2026 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Fri Mar 13 17:20:45 2026 +0100"
  },
  "message": "nfc: nci: clear NCI_DATA_EXCHANGE before calling completion callback\n\n[ Upstream commit 0efdc02f4f6d52f8ca5d5889560f325a836ce0a8 ]\n\nMove clear_bit(NCI_DATA_EXCHANGE) before invoking the data exchange\ncallback in nci_data_exchange_complete().\n\nThe callback (e.g. rawsock_data_exchange_complete) may immediately\nschedule another data exchange via schedule_work(tx_work).  On a\nmulti-CPU system, tx_work can run and reach nci_transceive() before\nthe current nci_data_exchange_complete() clears the flag, causing\ntest_and_set_bit(NCI_DATA_EXCHANGE) to return -EBUSY and the new\ntransfer to fail.\n\nThis causes intermittent flakes in nci/nci_dev in NIPA:\n\n  # #  RUN           NCI.NCI1_0.t4t_tag_read ...\n  # # t4t_tag_read: Test terminated by timeout\n  # #          FAIL  NCI.NCI1_0.t4t_tag_read\n  # not ok 3 NCI.NCI1_0.t4t_tag_read\n\nFixes: 38f04c6b1b68 (\"NFC: protect nci_data_exchange transactions\")\nReviewed-by: Joe Damato \u003cjoe@dama.to\u003e\nLink: https://patch.msgid.link/20260303162346.2071888-5-kuba@kernel.org\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\nSigned-off-by: Sasha Levin \u003csashal@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d36ea5701f022b4c77ade10ef04901676116a7a",
      "old_mode": 33188,
      "old_path": "net/nfc/nci/data.c",
      "new_id": "7a3fb2a397a1ea6bd6e176740def1297a01beba5",
      "new_mode": 33188,
      "new_path": "net/nfc/nci/data.c"
    }
  ]
}
