Patch "drm/nouveau: avoid a use-after-free when BO init fails" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/nouveau: avoid a use-after-free when BO init fails

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-nouveau-avoid-a-use-after-free-when-bo-init-fail.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 40d5c90738b68bdae99bea7fb2ccc7a4ed221929
Author: Jeremy Cline <jcline@xxxxxxxxxx>
Date:   Wed Dec 2 19:02:20 2020 -0500

    drm/nouveau: avoid a use-after-free when BO init fails
    
    [ Upstream commit bcf34aa5082ee2343574bc3f4d1c126030913e54 ]
    
    nouveau_bo_init() is backed by ttm_bo_init() and ferries its return code
    back to the caller. On failures, ttm_bo_init() invokes the provided
    destructor which should de-initialize and free the memory.
    
    Thus, when nouveau_bo_init() returns an error the gem object has already
    been released and the memory freed by nouveau_bo_del_ttm().
    
    Fixes: 019cbd4a4feb ("drm/nouveau: Initialize GEM object before TTM object")
    Cc: Thierry Reding <treding@xxxxxxxxxx>
    Signed-off-by: Jeremy Cline <jcline@xxxxxxxxxx>
    Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx>
    Reviewed-by: Karol Herbst <kherbst@xxxxxxxxxx>
    Signed-off-by: Karol Herbst <kherbst@xxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201203000220.18238-1-jcline@xxxxxxxxxx
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index c2051380d18c..6504ebec1190 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -196,10 +196,8 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain,
 	}
 
 	ret = nouveau_bo_init(nvbo, size, align, domain, NULL, NULL);
-	if (ret) {
-		nouveau_bo_ref(NULL, &nvbo);
+	if (ret)
 		return ret;
-	}
 
 	/* we restrict allowed domains on nv50+ to only the types
 	 * that were requested at creation time.  not possibly on



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux