Description
In the Linux kernel, the following vulnerability has been resolved: gpu: host1x: Allow entries in BO caches to be freed When a buffer object is pinned via host1x_bo_pin() with a cache, the resulting mapping is kept in the cache so it can be reused on subsequent pins. Each mapping held a reference to the underlying host1x_bo (taken in tegra_bo_pin / gather_bo_pin), so as long as a mapping was cached, the bo itself could not be freed. However, the only way to remove the cached mapping was through the free path of the buffer object. This meant that if a bo got cached, it could never get freed again. Resolve the circularity by holding a weak reference to the bo from the cache side. This is done by having the .pin callbacks not bump the bo's refcount -- instead the common Host1x bo code does so, except for the cache reference. Also move the remove-cache-mapping-on-free code into a common function inside Host1x code. This is only called from the TegraDRM GEM buffers since those are the only ones that can be cached at the moment.
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
1f39b1dfa53c84b56d7ad37fed44afda7004959d to < af755456299d44e4ed6af3b7c70a7f03ea37fdf1affected1f39b1dfa53c84b56d7ad37fed44afda7004959d to < 71c017b3f83ff72638f2a1b1d6d4e7bc61d30231affected1f39b1dfa53c84b56d7ad37fed44afda7004959d to < 0e9dd7cfb9986b78cc81eca126ccfbf57f4c0602affected1f39b1dfa53c84b56d7ad37fed44afda7004959d to < 8c0d3cf0d5108c96317e0eca92b60dd368867cefaffected1f39b1dfa53c84b56d7ad37fed44afda7004959d to < df63c76f9c8d881ca7bce1aecfba512328d0527daffected1f39b1dfa53c84b56d7ad37fed44afda7004959d to < 3cbf5e3c46e66d9b3b6b91099bb720c6cb1be3bcaffected
Linux Linux
Default version status: affected
5.17affected0 to < 5.17unaffected6.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/af755456299d44e4ed6af3b7c70a7f03ea37fdf1 ↗
- https://git.kernel.org/stable/c/71c017b3f83ff72638f2a1b1d6d4e7bc61d30231 ↗
- https://git.kernel.org/stable/c/0e9dd7cfb9986b78cc81eca126ccfbf57f4c0602 ↗
- https://git.kernel.org/stable/c/8c0d3cf0d5108c96317e0eca92b60dd368867cef ↗
- https://git.kernel.org/stable/c/df63c76f9c8d881ca7bce1aecfba512328d0527d ↗
- https://git.kernel.org/stable/c/3cbf5e3c46e66d9b3b6b91099bb720c6cb1be3bc ↗