mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
e07c7606a0
igt_ppgtt_pin_update() invokes i915_gem_context_get_vm_rcu(), which
returns a reference of the i915_address_space object to "vm" with
increased refcount.
When igt_ppgtt_pin_update() returns, "vm" becomes invalid, so the
refcount should be decreased to keep refcount balanced.
The reference counting issue happens in two exception handling paths of
igt_ppgtt_pin_update(). When i915_gem_object_create_internal() returns
IS_ERR, the refcnt increased by i915_gem_context_get_vm_rcu() is not
decreased, causing a refcnt leak.
Fix this issue by jumping to "out_vm" label when
i915_gem_object_create_internal() returns IS_ERR.
Fixes:
|
||
---|---|---|
.. | ||
huge_gem_object.c | ||
huge_gem_object.h | ||
huge_pages.c | ||
i915_gem_client_blt.c | ||
i915_gem_coherency.c | ||
i915_gem_context.c | ||
i915_gem_dmabuf.c | ||
i915_gem_mman.c | ||
i915_gem_object_blt.c | ||
i915_gem_object.c | ||
i915_gem_phys.c | ||
igt_gem_utils.c | ||
igt_gem_utils.h | ||
mock_context.c | ||
mock_context.h | ||
mock_dmabuf.c | ||
mock_dmabuf.h | ||
mock_gem_object.h |