Description
In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: fix reversed error cleanup order in ucopy functions nouveau_uvmm_vm_bind_ucopy() and nouveau_exec_ucopy() place their error cleanup labels in allocation order rather than reverse allocation order. On a u_memcpya() failure for in_sync.s, the goto to err_free_ops (or err_free_pushs) frees the first allocation and then falls through to err_free_ins, which calls u_free() on args->in_sync.s. Since args->in_sync.s still holds the ERR_PTR returned by the failed u_memcpya(), and ERR_PTR values are not caught by ZERO_OR_NULL_PTR(), kvfree() proceeds to dereference it, which can result in a kernel oops. A failure for out_sync.s instead jumps to err_free_ins and skips freeing the first allocation, leading to a memory leak. Fix by swapping the cleanup label order so resources are freed in the correct reverse allocation sequence.
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
b88baab828713ce0b49b185444b2ee83bed373a8 to < 2473ac314387a5def7244eb6d6a345934ed140bfaffectedb88baab828713ce0b49b185444b2ee83bed373a8 to < e15c25c7972d38a9f6bf8c3f7f29179a67263ebaaffectedb88baab828713ce0b49b185444b2ee83bed373a8 to < 4e109faa9ea2b6c04cc5a99e76db3126575a59d1affectedb88baab828713ce0b49b185444b2ee83bed373a8 to < ebbaf64d2635d1e78196c067fa8fa582a7dc17f7affectedb88baab828713ce0b49b185444b2ee83bed373a8 to < ab99ead646b1b833ecd57fe577a2816f2e848167affected
Linux Linux
Default version status: affected
6.6affected0 to < 6.6unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/2473ac314387a5def7244eb6d6a345934ed140bf ↗
- https://git.kernel.org/stable/c/e15c25c7972d38a9f6bf8c3f7f29179a67263eba ↗
- https://git.kernel.org/stable/c/4e109faa9ea2b6c04cc5a99e76db3126575a59d1 ↗
- https://git.kernel.org/stable/c/ebbaf64d2635d1e78196c067fa8fa582a7dc17f7 ↗
- https://git.kernel.org/stable/c/ab99ead646b1b833ecd57fe577a2816f2e848167 ↗