CVE-2024-35853

mlxsw: spectrum_acl_tcam: Fix memory leak during rehash

State
Published
Severity
6.4 Medium
Published
May 17, 2024
Updated
May 11, 2026
Reserved
May 17, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

mlxsw: spectrum_acl_tcam: Fix memory leak during rehash

The rehash delayed work migrates filters from one region to another. This is done by iterating over all chunks (all the filters with the same priority) in the region and in each chunk iterating over all the filters.

If the migration fails, the code tries to migrate the filters back to the old region. However, the rollback itself can also fail in which case another migration will be erroneously performed. Besides the fact that this ping pong is not a very good idea, it also creates a problem.

Each virtual chunk references two chunks: The currently used one ('vchunk->chunk') and a backup ('vchunk->chunk2'). During migration the first holds the chunk we want to migrate filters to and the second holds the chunk we are migrating filters from.

The code currently assumes - but does not verify - that the backup chunk does not exist (NULL) if the currently used chunk does not reference the target region. This assumption breaks when we are trying to rollback a rollback, resulting in the backup chunk being overwritten and leaked [1].

Fix by not rolling back a failed rollback and add a warning to avoid future cases.

[1] WARNING: CPU: 5 PID: 1063 at lib/parman.c:291 parman_destroy+0x17/0x20 Modules linked in: CPU: 5 PID: 1063 Comm: kworker/5:11 Tainted: G W 6.9.0-rc2-custom-00784-gc6a05c468a0b #14 Hardware name: Mellanox Technologies Ltd. MSN3700/VMOD0005, BIOS 5.11 01/06/2019 Workqueue: mlxsw_core mlxsw_sp_acl_tcam_vregion_rehash_work RIP: 0010:parman_destroy+0x17/0x20 [...] Call Trace: <TASK> mlxsw_sp_acl_atcam_region_fini+0x19/0x60 mlxsw_sp_acl_tcam_region_destroy+0x49/0xf0 mlxsw_sp_acl_tcam_vregion_rehash_work+0x1f1/0x470 process_one_work+0x151/0x370 worker_thread+0x2cb/0x3e0 kthread+0xd0/0x100 ret_from_fork+0x34/0x50 ret_from_fork_asm+0x1a/0x30 </TASK>

Scores

CVSSScoreVectorSource
3.16.4 MediumCVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:HCISA-ADP

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 843500518509128a935edab96bd8efef7c54669e to before c6f3fa7f5a748bf6e5c4eb742686d6952f854e76Affected
  • 843500518509128a935edab96bd8efef7c54669e to before 617e98ba4c50f4547c9eb0946b1cfc26937d70d1Affected
  • 843500518509128a935edab96bd8efef7c54669e to before 413a01886c3958d4b8aac23a3bff3d430b92093eAffected
  • 843500518509128a935edab96bd8efef7c54669e to before b822644fd90992ee362c5e0c8d2556efc8856c76Affected
  • 843500518509128a935edab96bd8efef7c54669e to before 0ae8ff7b6d42e33943af462910bdcfa2ec0cb8cfAffected
  • 843500518509128a935edab96bd8efef7c54669e to before b3fd51f684a0711504f82de510da109ae639722dAffected
  • 843500518509128a935edab96bd8efef7c54669e to before 8ca3f7a7b61393804c46f170743c3b839df13977Affected
LinuxLinux
  • 5.1Affected
  • before 5.1Not affected
  • 5.4.275 through 5.4.*Not affected
  • 5.10.216 through 5.10.*Not affected
  • 5.15.158 through 5.15.*Not affected
  • 6.1.90 through 6.1.*Not affected
  • 6.6.30 through 6.6.*Not affected
  • 6.8.9 through 6.8.*Not affected
  • 6.9 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.