Commit aaaa684b authored by Sasha Finkelstein's avatar Sasha Finkelstein Committed by Thomas Zimmermann
Browse files

drm/appletbdrm: Use kvzalloc for big allocations



This driver is attached to a ~2000x80 screen, which is a lot more than
a single page. This causes out of memory errors in some rare cases.

Reported-by: default avatarsoopyc <cassie@soopy.moe>
Closes: https://github.com/t2linux/fedora/issues/51


Signed-off-by: default avatarSasha Finkelstein <k@chaosmail.tech>
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarAditya Garg <gargaditya08@live.com>
Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Fixes: 0670c2f5 ("drm/tiny: add driver for Apple Touch Bars in x86 Macs")
Cc: <stable@vger.kernel.org> # v6.15+
Link: https://patch.msgid.link/20260420-x86-tb-vmalloc-v1-1-7757ff657223@chaosmail.tech
parent 4aa81100
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -353,7 +353,7 @@ static int appletbdrm_primary_plane_helper_atomic_check(struct drm_plane *plane,
		       frames_size +
		       sizeof(struct appletbdrm_fb_request_footer), 16);

	appletbdrm_state->request = kzalloc(request_size, GFP_KERNEL);
	appletbdrm_state->request = kvzalloc(request_size, GFP_KERNEL);

	if (!appletbdrm_state->request)
		return -ENOMEM;
@@ -543,7 +543,7 @@ static void appletbdrm_primary_plane_destroy_state(struct drm_plane *plane,
{
	struct appletbdrm_plane_state *appletbdrm_state = to_appletbdrm_plane_state(state);

	kfree(appletbdrm_state->request);
	kvfree(appletbdrm_state->request);
	kfree(appletbdrm_state->response);

	__drm_gem_destroy_shadow_plane_state(&appletbdrm_state->base);