linux_dsm_epyc7002/drivers/gpu/drm/radeon
Tom Rix 99010fac8b drm/radeon: fix double free
clang static analysis flags this error

drivers/gpu/drm/radeon/ci_dpm.c:5652:9: warning: Use of memory after it is freed [unix.Malloc]
                kfree(rdev->pm.dpm.ps[i].ps_priv);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/ci_dpm.c:5654:2: warning: Attempt to free released memory [unix.Malloc]
        kfree(rdev->pm.dpm.ps);
        ^~~~~~~~~~~~~~~~~~~~~~

problem is reported in ci_dpm_fini, with these code blocks.

	for (i = 0; i < rdev->pm.dpm.num_ps; i++) {
		kfree(rdev->pm.dpm.ps[i].ps_priv);
	}
	kfree(rdev->pm.dpm.ps);

The first free happens in ci_parse_power_table where it cleans up locally
on a failure.  ci_dpm_fini also does a cleanup.

	ret = ci_parse_power_table(rdev);
	if (ret) {
		ci_dpm_fini(rdev);
		return ret;
	}

So remove the cleanup in ci_parse_power_table and
move the num_ps calculation to inside the loop so ci_dpm_fini
will know how many array elements to free.

Fixes: cc8dbbb4f6 ("drm/radeon: add dpm support for CI dGPUs (v2)")

Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2020-07-08 09:04:25 -04:00
..
reg_srcs
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
atom-bits.h
atom-names.h
atom-types.h
atom.c drm/radeon: cleanup coding style a bit 2020-04-30 16:48:42 -04:00
atom.h drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
atombios_crtc.c Linux 5.6-rc2 2020-02-17 10:34:34 +01:00
atombios_dp.c drm/radeon: remove unnecessary braces around conditionals. 2020-01-07 12:04:13 -05:00
atombios_encoders.c drm/radeon: remove unnecessary braces around conditionals. 2020-01-07 12:04:13 -05:00
atombios_i2c.c gpu: drm: dead code elimination 2019-12-18 16:09:13 -05:00
atombios.h
avivod.h
btc_dpm.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
btc_dpm.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
btcd.h
cayman_blit_shaders.c
cayman_blit_shaders.h
ci_dpm.c drm/radeon: fix double free 2020-07-08 09:04:25 -04:00
ci_dpm.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
ci_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
cik_blit_shaders.c
cik_blit_shaders.h
cik_reg.h drm/radeon: Remove KFD_CIK_SDMA_QUEUE_OFFSET 2017-12-20 12:00:22 -05:00
cik_sdma.c drm/radeon: remove boolean checks in if statements. 2020-01-07 12:04:08 -05:00
cik.c drm/radeon: use true,false for bool variable in cik.c 2019-12-23 15:00:00 -05:00
cikd.h drm/radeon: deprecate and remove KFD interface 2017-10-30 14:16:21 +01:00
clearstate_cayman.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
clearstate_ci.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
clearstate_defs.h
clearstate_evergreen.h
clearstate_si.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
cypress_dpm.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
cypress_dpm.h
dce3_1_afmt.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
dce6_afmt.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
evergreen_blit_shaders.c
evergreen_blit_shaders.h
evergreen_cs.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
evergreen_dma.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
evergreen_hdmi.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
evergreen_reg.h
evergreen_smc.h
evergreen.c drm/radeon: use true, false for bool variable in evergreen.c 2019-12-23 14:59:59 -05:00
evergreend.h
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
kv_dpm.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
kv_dpm.h
kv_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
Makefile drm/radeon: align short build log 2020-04-01 14:44:43 -04:00
mkregtable.c drm/radeon: change SPDX identifier to MIT 2018-10-15 16:16:12 -05:00
ni_dma.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
ni_dpm.c drm/radeon: fix fb_div check in ni_init_smc_spll_table() 2020-07-01 01:59:26 -04:00
ni_dpm.h
ni_reg.h
ni.c drm/radeon: use true,false for bool variable in ni.c 2019-12-23 15:00:00 -05:00
nid.h
nislands_smc.h
ObjectID.h
ppsmc.h
pptable.h
r100_track.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
r100.c drm/radeon: remove boolean checks in if statements. 2020-01-07 12:04:08 -05:00
r100d.h
r200.c drm/radeon: fix r1xx/r2xx register checker for POT textures 2019-12-03 16:26:59 -05:00
r300_reg.h
r300.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
r300d.h
r420.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
r420d.h
r500_reg.h
r520.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
r520d.h
r600_blit_shaders.c
r600_blit_shaders.h
r600_cs.c drm/radeon: remove set but not used variable 'size', 'relocs_chunk' 2019-11-19 10:12:54 -05:00
r600_dma.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
r600_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
r600_dpm.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
r600_hdmi.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
r600_reg.h drm/radeon: enable ABGR and XBGR formats (v2) 2018-08-27 11:10:19 -05:00
r600.c drm/radeon: remove boolean checks in if statements. 2020-01-07 12:04:08 -05:00
r600d.h
radeon_acpi.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_acpi.h drm/radeon: Make radeon_atif_handler static 2017-08-15 14:46:07 -04:00
radeon_agp.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_asic.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_asic.h dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
radeon_atombios.c drm/radeon: convert to use i2c_new_client_device() 2020-03-28 22:48:20 +01:00
radeon_atpx_handler.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 191 2019-05-30 11:29:21 -07:00
radeon_audio.c drm: radeon: replace 0 with NULL 2019-11-26 14:51:04 -05:00
radeon_audio.h
radeon_benchmark.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
radeon_bios.c PCI: Use ioremap(), not phys_to_virt() for platform ROM 2020-03-30 09:52:23 -05:00
radeon_clocks.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_combios.c drm/radeon: convert to use i2c_new_client_device() 2020-03-28 22:48:20 +01:00
radeon_connectors.c drm/radeon: fix multiple reference count leak 2020-07-01 01:59:22 -04:00
radeon_cs.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
radeon_cursor.c drm/radeon: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:34 +01:00
radeon_device.c drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
radeon_display.c Merge tag 'amd-drm-next-5.9-2020-07-01' of git://people.freedesktop.org/~agd5f/linux into drm-next 2020-07-02 15:17:31 +10:00
radeon_dp_auxch.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_dp_mst.c drm: Remove drm dp mst destroy_connector callbacks 2020-03-11 16:53:17 -04:00
radeon_drv.c drm/radeon: Fix reference count leaks caused by pm_runtime_get_sync 2020-07-01 01:59:22 -04:00
radeon_drv.h drm/radeon: drop unused ati pcigart include. 2019-04-24 12:32:14 +10:00
radeon_encoders.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_family.h
radeon_fb.c drm/radeon: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:34 +01:00
radeon_fence.c gpu/drm: Remove debug info about CPU address 2020-07-08 09:04:21 -04:00
radeon_gart.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_gem.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
radeon_i2c.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_ib.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_irq_kms.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
radeon_kms.c Merge tag 'amd-drm-next-5.9-2020-07-01' of git://people.freedesktop.org/~agd5f/linux into drm-next 2020-07-02 15:17:31 +10:00
radeon_legacy_crtc.c drm/radeon: Convert to struct drm_crtc_helper_funcs.get_scanout_position() 2020-02-13 13:08:14 +01:00
radeon_legacy_encoders.c drm/radeon: remove boolean checks in if statements. 2020-01-07 12:04:08 -05:00
radeon_legacy_tv.c drm/radeon: remove set but not used variable 'tv_pll_cntl1' 2019-11-19 10:12:54 -05:00
radeon_mn.c drm/radeon: use mmu_interval_notifier_insert 2019-11-23 19:56:44 -04:00
radeon_mode.h drm/radeon: remove radeon_fb_{add,remove}_connector functions 2020-03-06 14:19:57 +01:00
radeon_object.c drm/radeon: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:34 +01:00
radeon_object.h drm/radeon: don't use ttm bo->offset 2020-06-25 11:58:49 +02:00
radeon_pm.c drm/radeon: remove boolean checks in if statements. 2020-01-07 12:04:08 -05:00
radeon_prime.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
radeon_reg.h
radeon_ring.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_sa.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_semaphore.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_sync.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
radeon_test.c drm/radeon: switch driver from bo->resv to bo->base.resv 2019-08-06 08:21:54 +02:00
radeon_trace_points.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_trace.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
radeon_ttm.c drm/radeon: don't use ttm bo->offset 2020-06-25 11:58:49 +02:00
radeon_ucode.c drm/radeon: drop use of drmP.h (1/2) 2019-06-10 22:30:24 +02:00
radeon_ucode.h
radeon_uvd.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
radeon_vce.c drm/radeon: remove unnecessary braces around conditionals. 2020-01-07 12:04:13 -05:00
radeon_vm.c drm/radeon: remove unnecessary braces around conditionals. 2020-01-07 12:04:13 -05:00
radeon.h drm/radeon: don't use ttm bo->offset 2020-06-25 11:58:49 +02:00
rs100d.h
rs400.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rs400d.h
rs600.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
rs600d.h
rs690.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
rs690d.h
rs780_dpm.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
rs780_dpm.h
rs780d.h
rv6xx_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv6xx_dpm.h
rv6xxd.h
rv200d.h
rv250d.h
rv350d.h
rv515.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv515d.h
rv730_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv730d.h
rv740_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv740d.h
rv770_dma.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
rv770_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv770_dpm.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
rv770_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
rv770_smc.h
rv770.c drm/radeon: use true,false for bool variable in rv770.c 2019-12-23 14:59:59 -05:00
rv770d.h
si_blit_shaders.c
si_blit_shaders.h
si_dma.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
si_dpm.c Revert "drm/[radeon|amdgpu]: Replace one-element array and use struct_size() helper" 2020-07-01 01:59:16 -04:00
si_dpm.h
si_reg.h
si_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
si.c drm/radeon: use true,false for bool variable in si.c 2019-12-23 14:59:58 -05:00
sid.h
sislands_smc.h
smu7_discrete.h
smu7_fusion.h
smu7.h
sumo_dpm.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
sumo_dpm.h drm/radeon: prepare header files for drmP.h removal 2019-06-10 22:30:24 +02:00
sumo_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
sumod.h
trinity_dpm.c drm/radeon: Don't include <drm/drm_pci.h> 2019-12-05 08:44:28 +01:00
trinity_dpm.h
trinity_smc.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
trinityd.h
uvd_v1_0.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
uvd_v2_2.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
uvd_v3_1.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
uvd_v4_2.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
vce_v1_0.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00
vce_v2_0.c drm/radeon: drop use of drmP.h (2/2) 2019-06-10 22:30:24 +02:00