Description
In the Linux kernel, the following vulnerability has been resolved: lockd: Plug nlm_file refcount leak on cached nlm_do_fopen() failure The cached-file path in nlm_lookup_file() reaches the found: label unconditionally, even when nlm_do_fopen() fails. At that label *result and file->f_count are updated before the error is returned. The wrappers nlm3svc_lookup_file() and nlm4svc_lookup_file() then bail out of their switch without copying *result back to their caller, so the proc handler's local nlm_file pointer remains NULL and the cleanup path skips nlm_release_file(). The f_count increment is never released, and nlm_traverse_files() can no longer reap the file because its refcount never returns to zero between requests. Short-circuit the cached path so neither *result nor f_count is touched when nlm_do_fopen() fails on a hashed nlm_file.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
e580323ac0b51ad10ec2e181d1f777479b7983e7 to < 6cd84cefd8b73e85b9eda17b319bd40a670f3a38affected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < fe3b45b56b6c3d4b6b341de27fa291005287a21caffected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < cb3420c047957e565101585bb4f15e1a6e3de6b0affected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < 7ce4c23e783e766507b2cef27bbf97e9ca944f1aaffected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < 84008bf1860e0ef8059a7583a1163f36b704d08aaffected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < 46d59ff421824b6483549d87f14efffbbbd1f6cbaffected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < 3a5c55a19cad62f2973be25fe96a1a9e7f618e8aaffected7f024fcd5c97dc70bb9121c80407cf3cf9be7159 to < 70a38f87bed7f0694fd07988b47b2db1e10d8df3affected5.10.220 to < 5.10.261affected
Linux Linux
Default version status: affected
5.15affected0 to < 5.15unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/6cd84cefd8b73e85b9eda17b319bd40a670f3a38 ↗
- https://git.kernel.org/stable/c/fe3b45b56b6c3d4b6b341de27fa291005287a21c ↗
- https://git.kernel.org/stable/c/cb3420c047957e565101585bb4f15e1a6e3de6b0 ↗
- https://git.kernel.org/stable/c/7ce4c23e783e766507b2cef27bbf97e9ca944f1a ↗
- https://git.kernel.org/stable/c/84008bf1860e0ef8059a7583a1163f36b704d08a ↗
- https://git.kernel.org/stable/c/46d59ff421824b6483549d87f14efffbbbd1f6cb ↗
- https://git.kernel.org/stable/c/3a5c55a19cad62f2973be25fe96a1a9e7f618e8a ↗
- https://git.kernel.org/stable/c/70a38f87bed7f0694fd07988b47b2db1e10d8df3 ↗