In the Linux kernel, the following vulnerability has been resolved:
i40e: Fix macvlan leak by synchronizing access to macfilterhash
This patch addresses a macvlan leak issue in the i40e driver caused by concurrent access to vsi->macfilterhash. The leak occurs when multiple threads attempt to modify the macfilterhash simultaneously, leading to inconsistent state and potential memory leaks.
To fix this, we now wrap the calls to i40edelmacfilter() and zeroing vf->defaultlanaddr.addr with spinlock/unlockbh(&vsi->macfilterhashlock), ensuring atomic operations and preventing concurrent access.
Additionally, we add lockdepassertheld(&vsi->macfilterhashlock) in i40eaddmacfilter() to help catch similar issues in the future.
Reproduction steps: 1. Spawn VFs and configure port vlan on them. 2. Trigger concurrent macvlan operations (e.g., adding and deleting portvlan and/or mac filters). 3. Observe the potential memory leak and inconsistent state in the macfilterhash.
This synchronization ensures the integrity of the macfilterhash and prevents the described leak.
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/50xxx/CVE-2024-50041.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-50041.json"
[
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9747288ba0a9ad4f5c9877f18dd245770ad64e",
"digest": {
"function_hash": "50796838419929810731372628427916372210",
"length": 3745.0
},
"id": "CVE-2024-50041-018555a8",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c",
"function": "i40e_vc_get_vf_resources_msg"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8831abff1bd5b6bc8224f0c0671f46fbd702b5b2",
"digest": {
"function_hash": "177471559379762487889872365737088071384",
"length": 515.0
},
"id": "CVE-2024-50041-106ad364",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c",
"function": "i40e_add_mac_filter"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dac6c7b3d33756d6ce09f00a96ea2ecd79fae9fb",
"digest": {
"line_hashes": [
"53671702669285957563409812911110860480",
"287019545751702892292703151207642456340",
"4736722284712988440641976845077995756",
"292406508869842647008923053515250091537",
"290501023594075160597479071496513175321",
"121139929915746601719399133692230940265"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-24fa03d0",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9db6ce9e2738b05a3672aff4d42169cf3bb5a3e3",
"digest": {
"line_hashes": [
"152202209833577970101617931552210695434",
"303973173902192387703736368304827580823",
"69816367776347402090327383278871041086"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-27d9bea1",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9747288ba0a9ad4f5c9877f18dd245770ad64e",
"digest": {
"function_hash": "177471559379762487889872365737088071384",
"length": 515.0
},
"id": "CVE-2024-50041-2c8237b9",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c",
"function": "i40e_add_mac_filter"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9db6ce9e2738b05a3672aff4d42169cf3bb5a3e3",
"digest": {
"function_hash": "177471559379762487889872365737088071384",
"length": 515.0
},
"id": "CVE-2024-50041-38ee27e4",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c",
"function": "i40e_add_mac_filter"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9747288ba0a9ad4f5c9877f18dd245770ad64e",
"digest": {
"line_hashes": [
"53671702669285957563409812911110860480",
"287019545751702892292703151207642456340",
"4736722284712988440641976845077995756",
"292406508869842647008923053515250091537",
"290501023594075160597479071496513175321",
"121139929915746601719399133692230940265"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-3df09539",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9db6ce9e2738b05a3672aff4d42169cf3bb5a3e3",
"digest": {
"line_hashes": [
"53671702669285957563409812911110860480",
"287019545751702892292703151207642456340",
"4736722284712988440641976845077995756",
"292406508869842647008923053515250091537",
"290501023594075160597479071496513175321",
"121139929915746601719399133692230940265"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-4bddb0eb",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dac6c7b3d33756d6ce09f00a96ea2ecd79fae9fb",
"digest": {
"function_hash": "177471559379762487889872365737088071384",
"length": 515.0
},
"id": "CVE-2024-50041-57c87c75",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c",
"function": "i40e_add_mac_filter"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8831abff1bd5b6bc8224f0c0671f46fbd702b5b2",
"digest": {
"function_hash": "258832102675923258862097278429407373273",
"length": 3753.0
},
"id": "CVE-2024-50041-5b9685a9",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c",
"function": "i40e_vc_get_vf_resources_msg"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dac6c7b3d33756d6ce09f00a96ea2ecd79fae9fb",
"digest": {
"function_hash": "258832102675923258862097278429407373273",
"length": 3753.0
},
"id": "CVE-2024-50041-5fa264af",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c",
"function": "i40e_vc_get_vf_resources_msg"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8831abff1bd5b6bc8224f0c0671f46fbd702b5b2",
"digest": {
"line_hashes": [
"53671702669285957563409812911110860480",
"287019545751702892292703151207642456340",
"4736722284712988440641976845077995756",
"292406508869842647008923053515250091537",
"290501023594075160597479071496513175321",
"121139929915746601719399133692230940265"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-743c8179",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8831abff1bd5b6bc8224f0c0671f46fbd702b5b2",
"digest": {
"line_hashes": [
"152202209833577970101617931552210695434",
"303973173902192387703736368304827580823",
"69816367776347402090327383278871041086"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-764954e9",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9747288ba0a9ad4f5c9877f18dd245770ad64e",
"digest": {
"line_hashes": [
"152202209833577970101617931552210695434",
"303973173902192387703736368304827580823",
"69816367776347402090327383278871041086"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-88e78fee",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9db6ce9e2738b05a3672aff4d42169cf3bb5a3e3",
"digest": {
"function_hash": "50796838419929810731372628427916372210",
"length": 3745.0
},
"id": "CVE-2024-50041-95add34f",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c",
"function": "i40e_vc_get_vf_resources_msg"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@703c4d820b31bcadf465288d5746c53445f02a55",
"digest": {
"line_hashes": [
"152202209833577970101617931552210695434",
"303973173902192387703736368304827580823",
"69816367776347402090327383278871041086"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-96bf1cd8",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@703c4d820b31bcadf465288d5746c53445f02a55",
"digest": {
"function_hash": "177471559379762487889872365737088071384",
"length": 515.0
},
"id": "CVE-2024-50041-a235f294",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c",
"function": "i40e_add_mac_filter"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@703c4d820b31bcadf465288d5746c53445f02a55",
"digest": {
"line_hashes": [
"53671702669285957563409812911110860480",
"287019545751702892292703151207642456340",
"4736722284712988440641976845077995756",
"292406508869842647008923053515250091537",
"290501023594075160597479071496513175321",
"121139929915746601719399133692230940265"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-c1ee8fd8",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c"
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dac6c7b3d33756d6ce09f00a96ea2ecd79fae9fb",
"digest": {
"line_hashes": [
"152202209833577970101617931552210695434",
"303973173902192387703736368304827580823",
"69816367776347402090327383278871041086"
],
"threshold": 0.9
},
"id": "CVE-2024-50041-ed1e1af1",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_main.c"
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@703c4d820b31bcadf465288d5746c53445f02a55",
"digest": {
"function_hash": "140299779884976737709687957599752543464",
"length": 3719.0
},
"id": "CVE-2024-50041-f94ae8cb",
"deprecated": false,
"target": {
"file": "drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c",
"function": "i40e_vc_get_vf_resources_msg"
}
}
]