In the Linux kernel, the following vulnerability has been resolved: mlxsw: fix refcount leak in mlxsw_sp_vrs_lpm_tree_replace() When mlxsw_sp_vrs_lpm_tree_replace() fails after replacing some VRs, the error rollback loop does not correctly revert the preceding replacements. The loop decrements the index but fails to update the vr pointer, which still points to the VR that caused the failure. As a result, the condition and the rollback call always operate on the same VR, potentially calling mlxsw_sp_vr_lpm_tree_replace() multiple times on it while never rolling back the earlier VRs. Those VRs continue to hold a reference to new_tree acquired via mlxsw_sp_lpm_tree_hold(), leaking the reference count of new_tree. Fix by reinitializing vr inside the error loop with the updated index: vr = &mlxsw_sp->router->vrs[i]; so that the loop correctly iterates over all VRs that were actually replaced.
https://git.kernel.org/stable/c/f6454a5fbf2224ad30ec70e686a6c592561da1f2
https://git.kernel.org/stable/c/c2c75c45b54f3b12eafb28a4eb47f8821512c1aa
https://git.kernel.org/stable/c/9e4a6185679922305ea1df68403f00ccc512656b
https://git.kernel.org/stable/c/8adebf07b46df79a0e49a6d4ae384f0db7c91db6
https://git.kernel.org/stable/c/7203ac71d3895fa5948b319dd724f0e1cffbc4a1
https://git.kernel.org/stable/c/3a2b47d1b4b3de54d030a7fdb6a322c970513ee3
https://git.kernel.org/stable/c/220d41bdce41fe5a39a7f419faab1e907b4093c2
https://git.kernel.org/stable/c/21cf8dc478a49e8de039c2739b1646a774cb1944