mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
In the SET_GLOBAL ioctl, v3d_perfmon_find() bumps the reference count on
the perfmon it returns, but v3d_perfmon_set_global_ioctl() and
v3d_perfmon_delete() fail to release that reference on several paths:
1. v3d_perfmon_set_global_ioctl() leaks the reference on its error
paths.
2. CLEAR_GLOBAL leaks both the find reference and the reference
previously stashed in v3d->global_perfmon by the SET_GLOBAL ioctl
that configured it.
3. Destroying a perfmon that is the current global perfmon leaks the
reference stashed by the SET_GLOBAL ioctl.
Release each of these references explicitly.
Cc: stable@vger.kernel.org
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| v3d_bo.c | ||
| v3d_debugfs.c | ||
| v3d_drv.c | ||
| v3d_drv.h | ||
| v3d_fence.c | ||
| v3d_gem.c | ||
| v3d_irq.c | ||
| v3d_mmu.c | ||
| v3d_perfmon.c | ||
| v3d_performance_counters.h | ||
| v3d_regs.h | ||
| v3d_sched.c | ||
| v3d_submit.c | ||
| v3d_sysfs.c | ||
| v3d_trace_points.c | ||
| v3d_trace.h | ||