FAILED: patch "[PATCH] drm/ttm: Don't leak a resource on eviction error" failed to apply to 5.15-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x e8188c461ee015ba0b9ab2fc82dbd5ebca5a5532
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2023072126-altitude-coexist-08f2@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
e8188c461ee0 ("drm/ttm: Don't leak a resource on eviction error") 8ab3b0663e27 ("drm/ttm: Don't print error message if eviction was interrupted")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e8188c461ee015ba0b9ab2fc82dbd5ebca5a5532 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= <[email protected]>
Date: Mon, 26 Jun 2023 11:14:49 +0200
Subject: [PATCH] drm/ttm: Don't leak a resource on eviction error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
On eviction errors other than -EMULTIHOP we were leaking a resource. Fix.
v2:
- Avoid yet another goto (Andi Shyti)
drivers/gpu/drm/ttm/ttm_bo.c +11 -11
@@ -458,18 +458,18 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, goto out; } -bounce: - ret =ttm_bo_handle_move_mem (bo, evict_mem, true, ctx, &hop); -if (ret == -EMULTIHOP ) { +do { + ret =ttm_bo_handle_move_mem (bo, evict_mem, true, ctx, &hop); +if (ret != -EMULTIHOP ) +break ; + ret =ttm_bo_bounce_temp_buffer (bo, &evict_mem, ctx, &hop); -if (ret) { -if (ret != -ERESTARTSYS && ret != -EINTR ) -pr_err ("Buffer eviction failed\n" ); -ttm_resource_free (bo, &evict_mem); - goto out; - } -/* try and move to final place now. */ - goto bounce; + }while (!ret); + +if (ret) { +ttm_resource_free (bo, &evict_mem); +if (ret != -ERESTARTSYS && ret != -EINTR ) +pr_err ("Buffer eviction failed\n" ); } out:return ret;