)]}'
{
  "commit": "7308ef8b4a6779a39f68d053c19b53a5c584a663",
  "tree": "8ea9146a5bad49916f5a97321724a0944d0013d7",
  "parents": [
    "e55f9e70b8ae6fc01550343e43874f59784dc5c7"
  ],
  "author": {
    "name": "Ido Schimmel",
    "email": "idosch@nvidia.com",
    "time": "Fri Oct 30 15:37:50 2026 +0200"
  },
  "committer": {
    "name": "Paolo Abeni",
    "email": "pabeni@redhat.com",
    "time": "Mon Nov 02 17:07:43 2026 +0100"
  },
  "message": "vxlan: Stop rejecting dynamic FDB entries with a nexthop ID\n\nCommit 98fc57d16744 (\"vxlan: reject dynamic fdb entries that reference a\nnexthop id\") started rejecting FDB entries that point to FDB nexthops\nunless they are configured as \"permanent\" or \"static\". The intent was to\nprevent such entries from being aged out by vxlan_cleanup(), which runs\nwithout RTNL and can therefore race with other VXLAN devices that modify\nthe same per-nexthop FDB list.\n\nHowever, FRR installs remote MACs that are behind a multihomed Ethernet\nSegment (EVPN-MH) as dynamic FDB entries that point to an FDB nexthop\ngroup. Since the above commit, these entries are rejected and traffic\ntowards the corresponding MACs is flooded to all the remote VTEPs.\n\nThese entries are also marked as externally learned (\"extern_learn\")\nand are therefore skipped by vxlan_cleanup(), but exempting externally\nlearned entries from the checks is not enough: vxlan_cleanup() reads\nthe state and flags of an entry without the hash lock, so an entry that\nis concurrently changed from dynamic and externally learned to static\ncan still be aged out.\n\nInstead, remove the checks added by the above commit and make\nvxlan_cleanup() skip FDB entries that point to FDB nexthops. Such\nentries can only be configured from user space, cannot be learned and\ncannot roam, so there is no reason to age them out. The nexthop pointer\nof an FDB entry is set before the entry is linked and is only cleared\nafter it was unlinked and an RCU grace period has passed, so it can be\nchecked without the hash lock.\n\nAdjust the test cases added by the above commit and add a test case\nthat checks that dynamic FDB entries that point to FDB nexthops are not\naged out. Without the fix:\n\n # ./fib_nexthops.sh -t \"ipv4_fdb_grp_fcnal ipv6_fdb_grp_fcnal\"\n\n IPv4 fdb groups functional\n --------------------------\n [...]\n TEST: Fdb mac add with nexthop group and dynamic state              [FAIL]\n TEST: Fdb mac add with nexthop group and extern_learn               [FAIL]\n TEST: Fdb mac without nexthop group aged out                        [ OK ]\n TEST: Fdb mac with nexthop group not aged out                       [FAIL]\n [...]\n\n IPv6 fdb groups functional\n --------------------------\n [...]\n TEST: Fdb mac add with nexthop group and dynamic state              [FAIL]\n TEST: Fdb mac add with nexthop group and extern_learn               [FAIL]\n TEST: Fdb mac without nexthop group aged out                        [ OK ]\n TEST: Fdb mac with nexthop group not aged out                       [FAIL]\n [...]\n\n Tests passed:  44\n Tests failed:   6\n Tests skipped:  0\n\nWith the fix:\n\n # ./fib_nexthops.sh -t \"ipv4_fdb_grp_fcnal ipv6_fdb_grp_fcnal\"\n\n IPv4 fdb groups functional\n --------------------------\n [...]\n TEST: Fdb mac add with nexthop group and dynamic state              [ OK ]\n TEST: Fdb mac add with nexthop group and extern_learn               [ OK ]\n TEST: Fdb mac without nexthop group aged out                        [ OK ]\n TEST: Fdb mac with nexthop group not aged out                       [ OK ]\n [...]\n\n IPv6 fdb groups functional\n --------------------------\n [...]\n TEST: Fdb mac add with nexthop group and dynamic state              [ OK ]\n TEST: Fdb mac add with nexthop group and extern_learn               [ OK ]\n TEST: Fdb mac without nexthop group aged out                        [ OK ]\n TEST: Fdb mac with nexthop group not aged out                       [ OK ]\n [...]\n\n Tests passed:  50\n Tests failed:   0\n Tests skipped:  0\n\nFixes: 1274e1cc4226 (\"vxlan: ecmp support for mac fdb entries\")\nFixes: 98fc57d16744 (\"vxlan: reject dynamic fdb entries that reference a nexthop id\")\nCc: stable@vger.kernel.org\nReported-by: Sascha Frey \u003csf@techfak.net\u003e\nCloses: https://lore.kernel.org/netdev/20261028142928.GA8406@techfak.de/\nTested-by: Sascha Frey \u003csf@techfak.net\u003e\nSigned-off-by: Ido Schimmel \u003cidosch@nvidia.com\u003e\nReviewed-by: Nikolay Aleksandrov \u003crazor@blackwall.org\u003e\nLink: https://patch.msgid.link/20261030133750.28668-1-idosch@nvidia.com\nSigned-off-by: Paolo Abeni \u003cpabeni@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "22353909977868dca92178272148dfe0da5e6856",
      "old_mode": 33188,
      "old_path": "drivers/net/vxlan/vxlan_core.c",
      "new_id": "d11028b374721c9f4691254edb61a55c679fd2f2",
      "new_mode": 33188,
      "new_path": "drivers/net/vxlan/vxlan_core.c"
    },
    {
      "type": "modify",
      "old_id": "431d7bed76224df9dfad6c0dd17d84e7ee4cb8a7",
      "old_mode": 33261,
      "old_path": "tools/testing/selftests/net/fib_nexthops.sh",
      "new_id": "adbec51917eb80aaaf517917f9cf76786cfc7300",
      "new_mode": 33261,
      "new_path": "tools/testing/selftests/net/fib_nexthops.sh"
    }
  ]
}
