CVE-2026-97615
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: net: bridge: use option bits for CFM/MRP frame handlers CFM and MRP register a global br_frame_type whose hlist_node is linked into the per-bridge frame_type_list when the first MEP/MRP instance is created. Enabling the protocol on multiple bridges therefore inserts the same node into multiple lists. Unregistering it on one bridge then corrupts list state belonging to another. These handlers can only be installed once per bridge, and they are uncommon. Track their per-bridge enable state with net_bridge option bits, which already live on the Rx hot cache line, and dispatch the matching handler directly from the receive path. Check both bits together first as an unlikely case. Remove the generic frame_type_list and br_frame_type helpers, which have had no other users since CFM and MRP were added. That shrinks struct net_bridge by 8 bytes and drops the list walk from the fast path. When neither protocol is compiled in, BR_CFM_MRP_OPTS is 0 and the compiler prunes the branch.
View original CVE JSON
{
"id": "CVE-2026-97615",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-09-25T11:17:15.670",
"lastModified": "2026-10-30T13:21:09.760",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: use option bits for CFM/MRP frame handlers\n\nCFM and MRP register a global br_frame_type whose hlist_node is linked\ninto the per-bridge frame_type_list when the first MEP/MRP instance is\ncreated. Enabling the protocol on multiple bridges therefore inserts the\nsame node into multiple lists. Unregistering it on one bridge then\ncorrupts list state belonging to another.\n\nThese handlers can only be installed once per bridge, and they are\nuncommon. Track their per-bridge enable state with net_bridge option\nbits, which already live on the Rx hot cache line, and dispatch the\nmatching handler directly from the receive path. Check both bits\ntogether first as an unlikely case.\n\nRemove the generic frame_type_list and br_frame_type helpers, which\nhave had no other users since CFM and MRP were added. That shrinks\nstruct net_bridge by 8 bytes and drops the list walk from the fast\npath. When neither protocol is compiled in, BR_CFM_MRP_OPTS is 0 and\nthe compiler prunes the branch."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"net/bridge/br_cfm.c",
"net/bridge/br_device.c",
"net/bridge/br_input.c",
"net/bridge/br_mrp.c",
"net/bridge/br_private.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "935eb5581583b008d0c8e928c03021b45967439b",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "158b6563c6c9dc0f368a2169911fb4f8a5ea0592",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "260f99b355a44f6ce67971ebc9223b22c8f93957",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "be5ead6552418d70df3a76b962ccd6ed78a31fb5",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "994fd705ca498223d188024cde833739a9dddbd2",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "42e033c8f30fd2923ccac3373ae70797e521dae1",
"versionType": "git",
"status": "affected"
},
{
"version": "90c628dd47ff4178f645b34938470bf43d02d123",
"lessThan": "7a49e6b16f36b8e085521699adbca3e321b6dd0c",
"versionType": "git",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"net/bridge/br_cfm.c",
"net/bridge/br_device.c",
"net/bridge/br_input.c",
"net/bridge/br_mrp.c",
"net/bridge/br_private.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "5.11",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.11",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "5.15.224",
"lessThanOrEqual": "5.15.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.1.191",
"lessThanOrEqual": "6.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.6.160",
"lessThanOrEqual": "6.6.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.12.112",
"lessThanOrEqual": "6.12.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.53",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2.7",
"lessThanOrEqual": "7.2.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {},
"references": [
{
"url": "https://git.kernel.org/stable/c/158b6563c6c9dc0f368a2169911fb4f8a5ea0592",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/260f99b355a44f6ce67971ebc9223b22c8f93957",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/42e033c8f30fd2923ccac3373ae70797e521dae1",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/7a49e6b16f36b8e085521699adbca3e321b6dd0c",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/935eb5581583b008d0c8e928c03021b45967439b",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/994fd705ca498223d188024cde833739a9dddbd2",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/be5ead6552418d70df3a76b962ccd6ed78a31fb5",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}