* [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions
@ 2026-06-10 10:01 Junrui Luo
2026-06-21 13:35 ` Danilo Krummrich
0 siblings, 1 reply; 3+ messages in thread
From: Junrui Luo @ 2026-06-10 10:01 UTC (permalink / raw)
To: Lyude Paul, Danilo Krummrich, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Dave Airlie
Cc: dri-devel, nouveau, linux-kernel, Yuhao Jiang, stable, Junrui Luo
nouveau_uvmm_vm_bind_ucopy() and nouveau_exec_ucopy() place their error
cleanup labels in allocation order rather than reverse allocation order.
On a u_memcpya() failure for in_sync.s, the goto to err_free_ops (or
err_free_pushs) frees the first allocation and then falls through to
err_free_ins, which calls u_free() on args->in_sync.s.
Since args->in_sync.s still holds the ERR_PTR returned by the failed
u_memcpya(), and ERR_PTR values are not caught by ZERO_OR_NULL_PTR(),
kvfree() proceeds to dereference it, which can result in a kernel oops.
A failure for out_sync.s instead jumps to err_free_ins and skips freeing
the first allocation, leading to a memory leak.
Fix by swapping the cleanup label order so resources are freed in the
correct reverse allocation sequence.
Fixes: b88baab82871 ("drm/nouveau: implement new VM_BIND uAPI")
Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
---
drivers/gpu/drm/nouveau/nouveau_exec.c | 4 ++--
drivers/gpu/drm/nouveau/nouveau_uvmm.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_exec.c b/drivers/gpu/drm/nouveau/nouveau_exec.c
index c01a01aee32b..a08ab1cfea9b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_exec.c
+++ b/drivers/gpu/drm/nouveau/nouveau_exec.c
@@ -331,10 +331,10 @@ nouveau_exec_ucopy(struct nouveau_exec_job_args *args,
return 0;
-err_free_pushs:
- u_free(args->push.s);
err_free_ins:
u_free(args->in_sync.s);
+err_free_pushs:
+ u_free(args->push.s);
return ret;
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index 36445915aa58..f5e4756b4de4 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1779,10 +1779,10 @@ nouveau_uvmm_vm_bind_ucopy(struct nouveau_uvmm_bind_job_args *args,
return 0;
-err_free_ops:
- u_free(args->op.s);
err_free_ins:
u_free(args->in_sync.s);
+err_free_ops:
+ u_free(args->op.s);
return ret;
}
---
base-commit: ddd664bbff63e09e7a7f9acae9c43605d4cf185f
change-id: 20260608-fixes-cb491288eb71
Best regards,
--
Junrui Luo <moonafterrain@outlook.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions
2026-06-10 10:01 [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions Junrui Luo
@ 2026-06-21 13:35 ` Danilo Krummrich
0 siblings, 0 replies; 3+ messages in thread
From: Danilo Krummrich @ 2026-06-21 13:35 UTC (permalink / raw)
To: Junrui Luo
Cc: Lyude Paul, Danilo Krummrich, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Dave Airlie,
dri-devel, nouveau, linux-kernel, Yuhao Jiang, stable
On Wed, 10 Jun 2026 18:01:28 +0800, Junrui Luo wrote:
> [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions
Applied, thanks!
Branch: drm-misc-fixes
Tree: https://gitlab.freedesktop.org/drm/misc/kernel.git
[1/1] drm/nouveau: fix reversed error cleanup order in ucopy functions
commit: ab99ead646b1
The patch will appear in the next linux-next integration (typically within 24
hours on weekdays).
The patch is queued up for Linus's tree and should land in the next -rc release.
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions
@ 2026-06-21 13:35 ` Danilo Krummrich
0 siblings, 0 replies; 3+ messages in thread
From: Danilo Krummrich @ 2026-06-21 13:35 UTC (permalink / raw)
To: Junrui Luo
Cc: Danilo Krummrich, Maarten Lankhorst, Maxime Ripard, Simona Vetter,
Dave Airlie, dri-devel, nouveau, linux-kernel, Yuhao Jiang,
stable
On Wed, 10 Jun 2026 18:01:28 +0800, Junrui Luo wrote:
> [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions
Applied, thanks!
Branch: drm-misc-fixes
Tree: https://gitlab.freedesktop.org/drm/misc/kernel.git
[1/1] drm/nouveau: fix reversed error cleanup order in ucopy functions
commit: ab99ead646b1
The patch will appear in the next linux-next integration (typically within 24
hours on weekdays).
The patch is queued up for Linus's tree and should land in the next -rc release.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-06-21 13:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-10 10:01 [PATCH] drm/nouveau: fix reversed error cleanup order in ucopy functions Junrui Luo
2026-06-21 13:35 ` Danilo Krummrich
2026-06-21 13:35 ` Danilo Krummrich
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.