1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm
Chen-Yu Tsai dcc583c225 drm/mediatek: Correctly free sg_table in gem prime vmap
The MediaTek DRM driver implements GEM PRIME vmap by fetching the
sg_table for the object, iterating through the pages, and then
vmapping them. In essence, unlike the GEM DMA helpers which vmap
when the object is first created or imported, the MediaTek version
does it on request.

Unfortunately, the code never correctly frees the sg_table contents.
This results in a kernel memory leak. On a Hayato device with a text
console on the internal display, this results in the system running
out of memory in a few days from all the console screen cursor updates.

Add sg_free_table() to correctly free the contents of the sg_table. This
was missing despite explicitly required by mtk_gem_prime_get_sg_table().

Also move the "out" shortcut label to after the kfree() call for the
sg_table. Having sg_free_table() together with kfree() makes more sense.
The shortcut is only used when the object already has a kernel address,
in which case the pointer is NULL and kfree() does nothing. Hence this
change causes no functional change.

Fixes: 3df64d7b0a ("drm/mediatek: Implement gem prime vmap/vunmap function")
Cc: <stable@vger.kernel.org>
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231004083226.1940055-1-wenst@chromium.org/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
2023-10-16 15:44:03 +00:00
..
amd drm/amdgpu: fix SI failure due to doorbells allocation 2023-10-09 17:59:29 -04:00
arm drm for 6.6-rc1 2023-08-30 13:34:34 -07:00
armada fbdev: Use _IOMEM_ infix for I/O-memory helpers 2023-07-31 20:06:52 +02:00
aspeed drm/aspeed: Convert to platform remove callback returning void 2023-06-08 09:04:10 -07:00
ast drm/ast: report connection status on Display Port. 2023-07-28 17:08:28 +02:00
atmel-hlcdc drm: atmel-hlcdc: Support inverting the pixel clock polarity 2023-08-10 08:44:34 +02:00
bridge drm for 6.6-rc1 2023-08-30 13:34:34 -07:00
ci drm: Add initial ci/ subdirectory 2023-08-29 19:56:11 +02:00
display drm-misc-next for v6.6: 2023-07-17 15:37:57 +02:00
etnaviv Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next 2023-08-18 06:42:12 +10:00
exynos drm/exynos: remove redundant of_match_ptr 2023-08-08 09:35:19 +09:00
fsl-dcu drm/fsl-dcu: Convert to platform remove callback returning void 2023-06-08 09:04:10 -07:00
gma500 fbdev: Use _IOMEM_ infix for I/O-memory helpers 2023-07-31 20:06:52 +02:00
gud drm/gud: use vmalloc_array and vcalloc 2023-07-04 12:05:08 +02:00
hisilicon drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
hyperv drm/hyperv: Fix a compilation issue because of not including screen_info.h 2023-07-09 17:00:09 +02:00
i2c drm-misc-next for v6.6: 2023-07-17 15:37:57 +02:00
i915 drm/i915: Invalidate the TLBs on each GT 2023-10-04 09:00:37 -04:00
imx Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
ingenic drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
kmb drm/kmb: Use GEM DMA fbdev emulation 2023-03-14 17:07:48 +01:00
lib
lima drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
logicvc drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
loongson drm/loongson: Add a check for lsdc_bo_create() errors 2023-08-04 13:31:32 +08:00
mcde drm/mcde: remove redundant of_match_ptr 2023-08-07 22:58:52 +02:00
mediatek drm/mediatek: Correctly free sg_table in gem prime vmap 2023-10-16 15:44:03 +00:00
meson drm/meson: fix memory leak on ->hpd_notify callback 2023-09-20 15:44:31 +02:00
mgag200 drm/mgag200: set variable mgag200_modeset storage-class-specifier to static 2023-06-23 10:33:00 +02:00
msm drm/msm/dpu: fail dpu_plane_atomic_check() based on mdp clk limits 2023-10-05 10:18:10 -07:00
mxsfb drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
nouveau drm/nouveau: exec: report max pushs through getparam 2023-10-04 00:10:18 +02:00
omapdrm fbdev: Use _DMAMEM_ infix for DMA-memory helpers 2023-07-31 20:07:18 +02:00
panel drm/panel: boe-tv101wum-nl6: Completely pull GPW to VGL before TP term 2023-10-10 10:38:17 +02:00
panfrost drm for 6.6-rc1 2023-08-30 13:34:34 -07:00
pl111 drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
qxl Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
radeon Merge drm/drm-fixes into drm-misc-fixes 2023-09-12 08:53:30 +02:00
renesas drm:rcar-du: Enable ABGR and XBGR formats 2023-08-14 13:47:30 +03:00
rockchip Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
scheduler dma-buf: add dma_fence_timestamp helper 2023-10-05 11:05:58 +02:00
solomon drm/ssd130x: clean up some inconsistent indenting 2023-07-31 10:07:31 +02:00
sprd drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
sti drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
stm drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
sun4i This pull request is full of clk driver changes. In fact, there aren't any 2023-08-30 19:53:39 -07:00
tegra fbdev: Use _DMAMEM_ infix for DMA-memory helpers 2023-07-31 20:07:18 +02:00
tests drm/tests: Fix kunit_release_action ctx argument 2023-09-30 12:13:05 -03:00
tidss drm: Fix references to drm_plane_helper_check_state() 2023-07-29 21:25:18 +02:00
tilcdc drm/tilcdc: Convert to platform remove callback returning void 2023-06-08 10:34:57 -07:00
tiny drm/tiny: correctly print struct resource * on error 2023-10-12 10:57:07 +02:00
ttm Short summary of fixes pull: 2023-08-25 06:28:33 +10:00
tve200 drm/tve200: remove redundant of_match_ptr 2023-08-07 22:58:01 +02:00
udl drm/udl: Convert to drm_crtc_helper_atomic_check() 2023-07-29 21:01:27 +02:00
v3d drm/v3d: Avoid -Wconstant-logical-operand in nsecs_to_jiffies_timeout() 2023-07-27 13:01:27 -03:00
vboxvideo drm/vboxvideo: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:32 +01:00
vc4 sound updates for 6.6-rc1 2023-08-30 13:45:05 -07:00
vgem drm/vgem: Drop struct drm_vgem_gem_object 2023-03-20 08:14:27 -03:00
virtio drm/virtio: clean out_fence on complete_submit 2023-09-21 00:11:24 +03:00
vkms Revert "drm/vkms: Fix race-condition between the hrtimer and the atomic commit" 2023-09-14 07:48:19 -03:00
vmwgfx drm/vmwgfx: Keep a gem reference to user bos in surfaces 2023-10-09 15:53:30 -04:00
xen drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
xlnx drm: xlnx: zynqmp_dpsub: Use devm_platform_ioremap_resource_byname() 2023-08-02 01:36:54 +03:00
drm_agpsupport.c
drm_aperture.c video/aperture: Drop primary argument 2023-04-16 14:17:55 +02:00
drm_atomic.c drm/atomic: Fix potential use-after-free in nonblocking commits 2023-07-21 09:53:30 -07:00
drm_atomic_helper.c drm/atomic-helper: relax unregistered connector check 2023-10-10 14:56:09 +02:00
drm_atomic_state_helper.c drm/atomic-helper: fix kernel-doc problems 2023-01-19 09:16:04 +01:00
drm_atomic_uapi.c drm/atomic: log errors in drm_mode_atomic_ioctl() 2023-06-23 16:34:25 +02:00
drm_auth.c
drm_blend.c drm/drm_blend: Remove usage of deprecated DRM_DEBUG_ATOMIC 2023-01-10 16:14:13 +01:00
drm_bridge.c drm/bridge: Add debugfs print for bridge chains 2023-08-02 10:05:01 +02:00
drm_bridge_connector.c drm/bridge_connector: Handle drm_connector_init_with_ddc() failures 2023-07-29 20:56:42 +02:00
drm_buddy.c drm/buddy: Fix drm buddy info output format 2023-08-09 09:46:05 -04:00
drm_bufs.c drm/nouveau: Remove support for legacy contexts/buffers 2023-01-13 09:22:02 +01:00
drm_cache.c
drm_client.c drm/client: Send hotplug event after registering a client 2023-07-11 14:02:01 +02:00
drm_client_modeset.c drm/client: Fix memory leak in drm_client_modeset_probe 2023-07-13 15:55:58 +02:00
drm_color_mgmt.c
drm_connector.c One doc fix for drm/connector, one fix for amdgpu for an crash when 2023-09-14 14:00:51 +02:00
drm_context.c drm/nouveau: Remove support for legacy contexts/buffers 2023-01-13 09:22:02 +01:00
drm_crtc.c
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h
drm_damage_helper.c
drm_debugfs.c drm/bridge: Add debugfs print for bridge chains 2023-08-02 10:05:01 +02:00
drm_debugfs_crc.c
drm_displayid.c drm/displayid: provide access to DisplayID version and primary use case 2023-02-27 02:58:38 +03:00
drm_dma.c
drm_drv.c drm/drv: use enum drm_minor_type when appropriate 2023-07-17 10:40:07 +02:00
drm_dumb_buffers.c drm: remove dumb_destroy callback 2023-02-10 12:19:27 +01:00
drm_edid.c Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c
drm_exec.c drm/drm_exec: Work around a WW mutex lockdep oddity 2023-09-07 10:30:12 +02:00
drm_fb_dma_helper.c
drm_fb_helper.c tty: sysrq: switch sysrq handlers from int to u8 2023-07-25 19:21:03 +02:00
drm_fbdev_dma.c fbdev: Use _DMAMEM_ infix for DMA-memory helpers 2023-07-31 20:07:18 +02:00
drm_fbdev_generic.c fbdev: Align deferred I/O with naming of helpers 2023-07-31 20:07:24 +02:00
drm_file.c drm: Add fdinfo memory stats 2023-05-24 18:03:30 +02:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Support the AB24/XB24 formats 2023-01-23 15:02:41 +01:00
drm_fourcc.c drm/fourcc: Add missing big-endian XRGB1555 and RGB565 formats 2022-11-23 20:34:46 +01:00
drm_framebuffer.c drm: use new debugfs device-centered functions on DRM core files 2022-12-22 14:58:21 -03:00
drm_gem.c drm: Do not overrun array in drm_gem_get_pages() 2023-10-12 10:44:06 +02:00
drm_gem_atomic_helper.c drm/simple-kms: Remove drm_gem_simple_display_pipe_prepare_fb() 2022-12-05 13:35:37 +01:00
drm_gem_dma_helper.c - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Consistenly use drm_dbg_kms() 2023-07-28 11:46:02 +02:00
drm_gem_shmem_helper.c Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
drm_gem_ttm_helper.c drm/ttm: merge ttm_bo_api.h and ttm_bo_driver.h v2 2022-12-06 12:54:14 +01:00
drm_gem_vram_helper.c drm/vram-helper: fix function names in vram helper doc 2023-05-08 09:16:18 +02:00
drm_gpuva_mgr.c drm/gpuva_mgr: remove unused prev pointer in __drm_gpuva_sm_map() 2023-08-24 14:27:14 +02:00
drm_hashtab.c
drm_internal.h drm/syncobj: add IOCTL to register an eventfd 2023-07-20 12:01:03 +02:00
drm_ioc32.c drm: Replace DRM_DEBUG with drm_dbg_core in file and ioctl handling 2023-01-03 18:20:57 +01:00
drm_ioctl.c drm/syncobj: add IOCTL to register an eventfd 2023-07-20 12:01:03 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c drm: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:30 +01:00
drm_legacy.h
drm_legacy_misc.c
drm_lock.c
drm_managed.c Merge drm/drm-next into drm-misc-next 2023-07-24 15:44:47 +02:00
drm_memory.c
drm_mipi_dbi.c drm/mipi-dbi: Lock SPI bus before setting D/C GPIO 2023-08-02 13:18:07 +02:00
drm_mipi_dsi.c Merge drm/drm-next into drm-misc-next 2023-07-24 15:44:47 +02:00
drm_mm.c
drm_mode_config.c drm/debugfs: create debugfs late register functions 2022-12-22 14:58:55 -03:00
drm_mode_object.c drm/kms: log when querying an object not included in lease 2023-06-23 16:38:00 +02:00
drm_modes.c drm: Fix comment on mode parsing 2023-02-20 14:56:52 +01:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c drm: of: Add drm_of_get_dsi_bus helper function 2023-01-27 09:39:21 +01:00
drm_panel.c drm/panel: Add a way for other devices to follow panel state 2023-08-01 07:38:13 -07:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for One Mix 2S 2023-10-03 12:06:08 +01:00
drm_pci.c
drm_plane.c drm/docs: Explicitly document default CRTC background behavior 2023-01-04 16:12:15 +00:00
drm_plane_helper.c drm: Remove references to removed transitional helpers 2023-07-29 21:25:16 +02:00
drm_prime.c drm/prime: Unexport helpers for fd/handle conversion 2023-06-26 11:08:46 +02:00
drm_print.c
drm_privacy_screen.c
drm_privacy_screen_x86.c
drm_probe_helper.c drm: Add an HPD poll helper to reschedule the poll work 2023-08-23 17:14:37 -04:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/simple-kms: Remove drm_gem_simple_display_pipe_prepare_fb() 2022-12-05 13:35:37 +01:00
drm_suballoc.c drm/suballoc: Extract amdgpu_sa.c as generic suballocation helper 2023-03-01 17:18:19 +01:00
drm_syncobj.c Merge drm/drm-next into drm-misc-next 2023-07-24 15:44:47 +02:00
drm_sysfs.c drm/sysfs: rename drm_sysfs_connector_status_event() 2023-06-23 15:54:00 +02:00
drm_trace.h
drm_trace_points.c
drm_vblank.c drm/vblank: Fix for drivers that do not drm_vblank_init() 2023-04-04 22:38:03 +02:00
drm_vblank_work.c
drm_vm.c mm: replace vma->vm_flags direct modifications with modifier calls 2023-02-09 16:51:39 -08:00
drm_vma_manager.c drm/drm_vma_manager: Add drm_vma_node_allow_once() 2023-01-19 14:16:55 +01:00
drm_writeback.c
Kconfig drm: fix up fbdev Kconfig defaults 2023-09-18 10:52:55 +02:00
Makefile drm: manager to keep track of GPUs VA mappings 2023-07-20 05:15:53 +02:00