)]}'
{
  "commit": "545b63503c696c4ce0663b3fcd37f41169aec1eb",
  "tree": "ff8a94cba5563bd55941754592c706af50b7a1d5",
  "parents": [
    "975b5b067f525a1b1338c4a3bee1c46545801518"
  ],
  "author": {
    "name": "Koichiro Den",
    "email": "den@valinux.co.jp",
    "time": "Mon Aug 31 00:16:17 2026 +0900"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Mon Aug 31 20:09:35 2026 -0700"
  },
  "message": "net: ntb_netdev: Fix statistics races\n\nntb_netdev updates shared net_device stats from per-QP RX and TX\ncallbacks. Once multiple queues are enabled, concurrent updates can be\nlost.\n\nUse per-CPU tstats for packet and byte counters and DEV_STATS_INC() for\nless frequent drop and error counters. Callbacks can run synchronously\nin the xmit path or asynchronously from a tasklet or the memcpy kthread.\nPin TX updates against migration in the kthread path. Use the IRQ-safe\nu64_stats helpers because netpoll can invoke the synchronous path with\nIRQs disabled.\n\nLet the core manage tstats while keeping transport teardown after\nunregister_netdev(), outside RTNL. RCU lets unregister wait for TX\ncompletions already updating stats, while later completions only consume\nthe skb and skip accounting and queue wake.\n\nFixes: 24d9e73c7e00 (\"net: ntb_netdev: Support ethtool channels for multi-queue\")\nCc: stable@vger.kernel.org\nSuggested-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\nSigned-off-by: Koichiro Den \u003cden@valinux.co.jp\u003e\nReviewed-by: Eric Dumazet \u003cedumazet@google.com\u003e\nLink: https://patch.msgid.link/20260830151617.3546585-1-den@valinux.co.jp\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9c171697e7620993506a405d3e4bddbf72a048eb",
      "old_mode": 33188,
      "old_path": "drivers/net/ntb_netdev.c",
      "new_id": "2c04be6d61a856d4d2b9903bb9064404424126e5",
      "new_mode": 33188,
      "new_path": "drivers/net/ntb_netdev.c"
    }
  ]
}
