1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/amd/amdgpu
Christian König e284022163 drm/amdgpu: fix incorrect mutex usage v3
Before this patch the scheduler fence was created when we push the job
into the queue, so we could only get the fence after pushing it.

The mutex now was necessary to prevent the thread pushing the jobs to
the hardware from running faster than the thread pushing the jobs into
the queue.

Otherwise the thread pushing jobs into the queue would have accessed
possible freed up memory when it tries to get a reference to the fence.

So what you get in the end is thread A:
mutex_lock(&job->lock);
...
Kick of thread B.
...
mutex_unlock(&job->lock);

And thread B:
mutex_lock(&job->lock);
....
mutex_unlock(&job->lock);
kfree(job);

I'm actually not sure if I'm still up to date on this, but this usage
pattern used to be not allowed with mutexes. See here as well
https://lwn.net/Articles/575460/.

v2: remove unrelated changes, fix missing owner
v3: rebased, add more commit message

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2015-11-16 11:05:58 -05:00
..
amdgpu.h drm/amdgpu: fix incorrect mutex usage v3 2015-11-16 11:05:58 -05:00
amdgpu_acpi.c drm/amdgpu: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-14 16:16:38 -04:00
amdgpu_acpi.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_afmt.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_amdkfd.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_amdkfd.h drm/amdgpu: Add amdgpu <--> amdkfd gfx8 interface 2015-07-20 09:16:48 +03:00
amdgpu_amdkfd_gfx_v7.c drm/amdgpu: rework sdma structures 2015-10-14 16:16:36 -04:00
amdgpu_amdkfd_gfx_v8.c drm/amdgpu: rework sdma structures 2015-10-14 16:16:36 -04:00
amdgpu_atombios.c drm/amdgpu: adjust default dispclk (v2) 2015-10-15 10:04:13 -04:00
amdgpu_atombios.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_atpx_handler.c vga_switcheroo: Constify vga_switcheroo_handler 2015-10-20 20:19:29 +02:00
amdgpu_benchmark.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_bios.c drm/amdgpu: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-14 16:16:38 -04:00
amdgpu_bo_list.c drm/amdgpu: remove amdgpu_bo_list_clone 2015-08-25 10:49:12 -04:00
amdgpu_cgs.c drm/amdgpu/cgs: remove import_gpu_mem 2015-09-30 12:44:16 -04:00
amdgpu_connectors.c drm/amdgpu: Don't link train DisplayPort on HPD until we get the dpcd 2015-08-21 18:07:38 -04:00
amdgpu_connectors.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_cs.c drm/amdgpu: fix incorrect mutex usage v3 2015-11-16 11:05:58 -05:00
amdgpu_ctx.c drm/amdgpu: don't oops on failure to load (v2) 2015-11-03 11:15:19 -05:00
amdgpu_device.c drm/amdgpu: update the core VI support for Stoney 2015-10-21 12:21:31 -04:00
amdgpu_display.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
amdgpu_dpm.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_dpm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_drv.c Merge branch 'drm-next-4.4' of git://people.freedesktop.org/~agd5f/linux into drm-next 2015-10-30 09:48:28 +10:00
amdgpu_drv.h drm/amdgpu: merge amdgpu_family.h into amd_shared.h (v2) 2015-08-17 16:50:21 -04:00
amdgpu_encoders.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_fb.c Merge branch 'drm-next-4.4' of git://people.freedesktop.org/~agd5f/linux into drm-next 2015-11-05 10:57:25 +10:00
amdgpu_fence.c drm/amdgpu: add kmem cache for amdgpu fence 2015-11-16 11:05:50 -05:00
amdgpu_gart.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_gds.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_gem.c drm/amdgpu: fix the broken vm->mutex V2 2015-10-21 11:35:14 -04:00
amdgpu_gfx.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_gfx.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_i2c.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_i2c.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_ib.c drm/amdgpu: use common fence for amdgpu_vm_fence 2015-11-16 11:05:49 -05:00
amdgpu_ih.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ih.h drm/amdgpu: Implement irq interfaces for CGS 2015-08-17 16:50:09 -04:00
amdgpu_ioc32.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_irq.c drm/amdgpu: Fix max_vblank_count value for current display engines 2015-09-23 17:23:42 -04:00
amdgpu_irq.h drm/amdgpu: Implement irq interfaces for CGS 2015-08-17 16:50:09 -04:00
amdgpu_kms.c Merge tag 'topic/drm-misc-2015-10-19' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-10-20 09:01:49 +10:00
amdgpu_mn.c drm/amdgpu: fix userptr lockup 2015-06-03 21:03:26 -04:00
amdgpu_mode.h Merge commit '06d1ee32a4d25356a710b49d5e95dbdd68bdf505' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2015-10-16 10:25:28 +10:00
amdgpu_object.c drm/amdgpu: add TOPDOWN flag to the whole vram 2015-10-07 23:48:22 -04:00
amdgpu_object.h drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_pll.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pll.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pm.c drm/amdgpu: don't try to recreate sysfs entries on resume 2015-10-23 10:45:35 -04:00
amdgpu_pm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_prime.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ring.c drm/amdgpu: move ring_from_fence to common code 2015-10-30 01:54:07 -04:00
amdgpu_sa.c drm/amdgpu: move ring_from_fence to common code 2015-10-30 01:54:07 -04:00
amdgpu_sched.c drm/amdgpu: fix incorrect mutex usage v3 2015-11-16 11:05:58 -05:00
amdgpu_semaphore.c drm/amdgpu: improve sa_bo->fence by kernel fence 2015-08-25 10:38:41 -04:00
amdgpu_sync.c drm/amdgpu: remove AMDGPU_FENCE_OWNER_MOVE 2015-11-04 12:29:23 -05:00
amdgpu_test.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_trace.h drm/amdgpu: add command submission workflow tracepoint 2015-11-16 11:05:57 -05:00
amdgpu_trace_points.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_ttm.c drm/amdgpu: fix seq_printf format string 2015-11-16 11:05:55 -05:00
amdgpu_ucode.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ucode.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_uvd.c drm/amdgpu: add UVD support for Stoney 2015-10-21 12:20:50 -04:00
amdgpu_uvd.h drm/amdgpu: change uvd ib test to use kernel fence directly 2015-08-17 16:50:51 -04:00
amdgpu_vce.c drm/amdgpu: add VCE support for Stoney (v2) 2015-10-21 12:21:07 -04:00
amdgpu_vce.h drm/amdgpu: use kernel fence for vce ib test 2015-08-17 16:50:52 -04:00
amdgpu_vm.c drm/amdgpu: use common fence for amdgpu_vm_fence 2015-11-16 11:05:49 -05:00
atom.c drm/amdgpu/atom: add support for new div32 opcodes (v3) 2015-10-14 16:16:24 -04:00
atom.h drm/amdgpu/atom: add support for new div32 opcodes (v3) 2015-10-14 16:16:24 -04:00
atombios_crtc.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_crtc.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_dp.c drm/amdgpu/atom: Send out the full AUX address 2015-09-02 12:04:54 -04:00
atombios_dp.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_encoders.c drm/amdgpu: Restore LCD backlight level on resume 2015-09-29 15:08:53 -04:00
atombios_encoders.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_i2c.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_i2c.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
ci_dpm.c drm/amdgpu: fix bug that can't enter thermal interrupt for bonaire. 2015-11-16 11:05:56 -05:00
ci_dpm.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
ci_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
cik.c drm/amdgpu: check before checking pci bridge registers 2015-10-06 10:43:16 -04:00
cik.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_dpm.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_ih.c drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_sdma.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
cik_sdma.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cikd.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
clearstate_ci.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
clearstate_defs.h drm/amdgpu: add clearstate_defs.h 2015-06-03 21:03:12 -04:00
clearstate_vi.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
cz_dpm.c Merge branch 'drm-next-4.4' of git://people.freedesktop.org/~agd5f/linux into drm-next 2015-10-30 09:48:28 +10:00
cz_dpm.h drm/amdgpu: correct define SMU_EnabledFeatureScoreboard_SclkDpmOn 2015-06-29 11:21:52 -04:00
cz_ih.c drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cz_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cz_ppsmc.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
cz_smc.c drm/amdgpu: Update SMC/DPM for Stoney 2015-10-21 12:19:46 -04:00
cz_smumgr.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
dce_v8_0.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
dce_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v10_0.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
dce_v10_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v11_0.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
dce_v11_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
fiji_dpm.c drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
fiji_ppsmc.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
fiji_smc.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
fiji_smumgr.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
gfx_v7_0.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
gfx_v7_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gfx_v8_0.c drm/amdgpu: update Fiji's tiling mode table 2015-11-16 11:05:56 -05:00
gfx_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gmc_v7_0.c drm/amdgpu: Fix default page access routing 2015-11-16 11:05:53 -05:00
gmc_v7_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gmc_v8_0.c drm/amdgpu: Fix default page access routing 2015-11-16 11:05:53 -05:00
gmc_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_dpm.c drm/amdgpu/iceland: don't call smu_init on resume 2015-06-10 09:32:25 -04:00
iceland_ih.c drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
iceland_smc.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
iceland_smumgr.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
Kconfig drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
kv_dpm.c drm/amdgpu: add missing dpm check for KV dpm late init 2015-10-19 15:54:21 -04:00
kv_dpm.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
kv_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
Makefile drm/amd: add scheduler fence implementation (v2) 2015-08-17 16:51:07 -04:00
ObjectID.h
ppsmc.h drm/amdgpu: add ppsmc.h 2015-06-03 21:03:13 -04:00
sdma_v2_4.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
sdma_v2_4.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
sdma_v3_0.c drm/amdgpu: add SDMA support for Stoney (v2) 2015-10-21 12:20:20 -04:00
sdma_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
smu7.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
smu7_discrete.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
smu7_fusion.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
smu8.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
smu8_fusion.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
smu_ucode_xfer_cz.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
smu_ucode_xfer_vi.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
tonga_dpm.c drm/amdgpu/tonga: don't call smu_init on resume 2015-06-10 09:32:19 -04:00
tonga_ih.c drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
tonga_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
tonga_ppsmc.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
tonga_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
tonga_smc.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
tonga_smumgr.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
uvd_v4_2.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
uvd_v4_2.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v5_0.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
uvd_v5_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v6_0.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
uvd_v6_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v2_0.c drm/amdgpu: remove old lockup detection infrastructure 2015-10-21 11:35:12 -04:00
vce_v2_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v3_0.c drm/amdgpu: add VCE support for Stoney (v2) 2015-10-21 12:21:07 -04:00
vce_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vi.c Merge branch 'drm-next-4.4' of git://people.freedesktop.org/~agd5f/linux into drm-next 2015-11-05 10:57:25 +10:00
vi.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vi_dpm.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
vid.h drm/amdgpu: Add amdgpu <--> amdkfd gfx8 interface 2015-07-20 09:16:48 +03:00